Jump to content

Recommended Posts

Bonjour chers marchands et amis codeurs,

J'ai un problème avec l'import de fichiers attachés aux produits. En effet, j'ai ajouté plusieurs fichiers pdf avec le backoffice qui se trouvent maintenant dans le dossier download à la racine de mon site.

Mais je ne parviens pas à les associer automatiquement avec mes produits lors de l'import de ces derniers. J'ai bien vu qu'il y avait une colonne "URL du fichier", j'y ai donc rentré l'URL "https://nom_de_ma_boutique/download/nom_du_fichier" mais cela ne fonctionne pas. J'ai compris que Prestashop chiffrait le nom du fichier mais il faut bien que j'utilise le vrai nom du fichier pour l'importation... Comment faire ? Est-ce que cette colonne n'est pas fonctionnelle ou est-ce que je m'y prends mal ?

Pour info, j'utilise la dernière version de Prestashop (1.7.5)

Merci d'avance de votre aide !

PS : Si vous souhaitez avoir plus d'informations sur ma boutique, n'hésitez pas à me le faire savoir, j'ai peut-être été trop concis...

Share this post


Link to post
Share on other sites

Tu dois entrer l'url où l'outils d'import va pouvoir télécharger ton fichier

Exactement comme pour les url des images produits

Share this post


Link to post
Share on other sites

Bonsoir,

Merci de prendre le temps de m'aider.

Il me semble que c'est ce que j'ai fais... les fichiers sont localisés dans le dossier download, j'ai donc écrit l'url exactement comme pour les images mais avec le dossier download. Par contre, les noms des fichiers sont chiffrés, mais je ne peux pas écrire le chiffrage dans l'url (ça n'a pas de sens pour le excel).

Mais je pense que j'ai trouvé le problème : la colonne URL du fichier est, je pense, destinée à l'url du fichier du produit virtuel (si la ligne du produit que j'importe ajoute un produit de type virtuel). Donc, rien à voir avec ce que je veux faire. Je pense que je vais partir sur un peu de codage dans le AdminImportController, puisque ça a l'air d'être encore une fonction non gérée par Prestashop...

Edited by Vintelec (see edit history)

Share this post


Link to post
Share on other sites

prestashop exact chiffre les fichiers pour qu’ils ne soient pas aussi publics. Si vous voulez faire ce que vous dites, téléchargez simplement les fichiers dans le dossier downloads à l’aide du programme ftp.
et l'URL est répertorié http: //domain/downloads/example.zip

Share this post


Link to post
Share on other sites

@Gerardo

Qu'est ce que tu racontes? C'est très gentil de vouloir aider, mais il faut savoir de ce dont tu parles

 

@Vintelec

Non l'url doit être accéssible par l'outils d'import en amont et le répertoire download est PAR DESIGN interdit d'être lu pour des raisons de sécurité.

Tu dois mettre tes fichiers dans un répertoire "public" pour que l'import puisse les "injecter"

Share this post


Link to post
Share on other sites

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.

Edited by Vintelec (see edit history)

Share this post


Link to post
Share on other sites

Autant pour moi, j'avais compris que tu parlais de ProductDownload.

 

Share this post


Link to post
Share on other sites

Bonjour,

Cela m'intéresse beaucoup. J'ai intégré le code dans les fichiers correspondants.

Par contre dans le fichier d'importation, quelle colonne dans la liste déroulante lors de l'importation en BO doit correspondre à l'url du fichier qui se trouve dans download ?

J'ai essayé avec la colonne "url du fichier" mais ça n'a pas fonctionné.

En vous remerciant.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More