Jump to content

Edit History

Vintelec

Vintelec

Non, je pense que vous vous trompez, j'ai déjà essayé cette méthode, sans succès.

Je pense que Prestashop, comme je l'ai dis précédemment, n'implémente tout simplement pas le processus d'association fichiers/produits (dans le cas des fichiers joints). En effet, la fonction qui permet cette association n'est pas utilisée dans le code d'import (AdminImportController.php). J'ai donc codé moi-même cette fonctionnalité :

A rajouter dans classes/Attachment.php, n'importe où entre deux fonctions :

     /**
     * Get attachment ID by name.
     *
     * @param string $name Attachment Name
     *
     * @return int Attachment ID
     */
    public static function getAttachmentIDByName($name)
    {
        return (int) Db::getInstance()->getValue('
            SELECT id_attachment
            FROM ' . _DB_PREFIX_ . 'attachment
            WHERE file_name = "' . $name . '"',false
        );
    }

et dans controllers/AdminImportController.php, dans la fonction productImportOne, après la ligne 1679 :

"AdminImportController::arrayWalk($info, array('AdminImportController', 'fillInfo'), $product);"

        //Product attachments
        if(!empty($info['file_url']))
        {
            $attachments = explode(",",$info['file_url']);
            $attachments_ids=array();
            foreach($attachments as $attachment)
                array_push($attachments_ids,Attachment::getAttachmentIDByName($attachment));
            Attachment::attachToProduct($info['id'],$attachments_ids);
        }

(on peut mettre le code plus loin mais attention de ne pas le mettre après le product->add(), sinon c'est trop tard, le produit a été ajouté !)

Voilà, et avec ça, pour moi ça marche niquel ! A condition bien sûr d'avoir ajouté le fichier dans le backoffice dans la catégorie "Fichiers" au préalable !

Merci quand même de m'avoir répondu 😀

Prestashop'ment vôtre.

Vintelec

Vintelec

Non, je pense que vous vous trompez, j'ai déjà essayé cette méthode, sans succès.

Je pense que Prestashop, comme je l'ai dis précédemment, n'implémente tout simplement pas le processus d'association fichiers/produits (dans le cas des fichiers joints). En effet, la fonction qui permet cette association n'est pas utilisée dans le code d'import (AdminImportController.php). J'ai donc codé moi-même cette fonctionnalité :

A rajouter dans classes/Attachment.php, n'importe où entre deux fonctions :

     /**
     * Get attachment ID by name.
     *
     * @param string $name Attachment Name
     *
     * @return int Attachment ID
     */
    public static function getAttachmentIDByName($name)
    {
        return (int) Db::getInstance()->getValue('
            SELECT id_attachment
            FROM ' . _DB_PREFIX_ . 'attachment
            WHERE file_name = "' . $name . '"',false
        );
    }

et dans controllers/AdminImportController.php, dans la fonction productImportOne, après la ligne 1679 :

"AdminImportController::arrayWalk($info, array('AdminImportController', 'fillInfo'), $product);"

        //Product attachments
        if(!empty($info['file_url']))
        {
            $attachments = explode(",",$info['file_url']);
            $attachments_ids=array();
            foreach($attachments as $attachment)
                array_push($attachments_ids,Attachment::getAttachmentIDByName($attachment));
            Attachment::attachToProduct($info['id'],$attachments_ids);
        }

(on peut mettre le code plus loin mais attention de ne pas le mettre après le product->add(), sinon c'est trop tard, le produit a été ajouté !)

Voilà, et avec ça, pour moi ça marche niquel ! A condition bien sûr d'avoir ajouté le fichier dans le backoffice dans la catégorie "Fichiers" !

Merci quand même de m'avoir répondu 😀

Prestashop'ment vôtre.

Vintelec

Vintelec

Non, je pense que vous vous trompez, j'ai déjà essayé cette méthode, sans succès.

Je pense que Prestashop, comme je l'ai dis précédemment, n'implémente tout simplement pas le processus d'association fichiers/produits (dans le cas des fichiers joints). En effet, la fonction qui permet cette association n'est pas utilisée dans le code d'import (AdminImportController.php). J'ai donc codé moi-même cette fonctionnalité :

A rajouter dans classes/Attachment.php, n'importe où entre deux fonctions :

     /**
     * Get attachment ID by name.
     *
     * @param string $name Attachment Name
     *
     * @return int Attachment ID
     */
    public static function getAttachmentIDByName($name)
    {
        return (int) Db::getInstance()->getValue('
            SELECT id_attachment
            FROM ' . _DB_PREFIX_ . 'attachment
            WHERE file_name = "' . $name . '"',false
        );
    }

et dans controllers/AdminImportController.php, dans la fonction productImportOne, après la ligne 1679 :

"AdminImportController::arrayWalk($info, array('AdminImportController', 'fillInfo'), $product);"

        //Product attachments
        if(!empty($info['file_url']))
        {
            $attachments = explode(",",$info['file_url']);
            $attachments_ids=array();
            foreach($attachments as $attachment)
                array_push($attachments_ids,Attachment::getAttachmentIDByName($attachment));
            Attachment::attachToProduct($info['id'],$attachments_ids);
        }

(on peut mettre le code plus loin mais attention de ne pas la mettre après le product->add(), sinon c'est trop tard, le produit a été ajouté !)

Voilà, et avec ça, pour moi ça marche niquel ! A condition bien sûr d'avoir ajouté le fichier dans le backoffice dans la catégorie "Fichiers" !

Merci quand même de m'avoir répondu 😀

Prestashop'ment vôtre.

×
×
  • Create New...