HDPierre Posted July 1, 2014 Share Posted July 1, 2014 Bonjour,Je souhaiterais intégrer la possibilité à mes clients de joindre un pdf a un produit dans ma boutique ( Prestashop 1.5.6.2).Je m'explique, pour une imprimerie en ligne :Le client : je souhaite acheter des cartes de visite, je peux lié un fichier pdf dans lequel j'ai créé le visuel de ma carte de visite au produit, puis j'ajoute au panier mon produit, et enfin je réalise mon achat normalement.L'administrateur du site : je reçois un mail m'indiquant une nouvelle commande, dans lequel je retrouve le pdf. Je peux également consulter le pdf dans l'administration de prestashop.Quelqu'un aurait trouvé un module capable de réaliser ceci (ormis PDF product costumization) ?Je vous remercie (Je m'excuse d'avance si je n'ai pas placé au bon endroit ce topic) Link to comment Share on other sites More sharing options...
Szed Posted July 1, 2014 Share Posted July 1, 2014 Cela est faisable de base avec la personnalisation. Vous pouvez créer deux type de champ que le client doit (obligatoire ou non), remplir avant l'ajout au panier : - champ texte. - champ fichier : dans lequel il pourrait ajouter son PDF. Le reste, ce n'est que de la mise en page Pas la peine de passer par un module! Link to comment Share on other sites More sharing options...
HDPierre Posted July 1, 2014 Author Share Posted July 1, 2014 Merci Szed ! Tu ne saurais pas par hasard comment créer ces 2 champs , les rendre obligatoires et leurs donner un nom lors de l'import ?Je me vois mal faire ça pour 5000 produits Link to comment Share on other sites More sharing options...
Szed Posted July 1, 2014 Share Posted July 1, 2014 La par contre, pour de la modif de masse, il va vous falloir un module de modification de masse ^^ Link to comment Share on other sites More sharing options...
HDPierre Posted July 1, 2014 Author Share Posted July 1, 2014 D'accord, merci je vais voir ça Un module en particulier a me conseiller ? Link to comment Share on other sites More sharing options...
Szed Posted July 2, 2014 Share Posted July 2, 2014 Un qui revient assez souvent et semble très complet c'est Store Commander. Vérifiez tout de même qu'il fait bien ce que vous souhaiter. Sinon, par import vous parliez d'import CSV ? C'est peut être possible de créer des champs de perso lors de l'import, mais je n'ai jamais testé (mes imports se sont toujours limité à des trucs simples : Nom, prix, etc). Essayez de télécharger l'exemple CSV de l'import produit pour voir si ca parle de champ de perso. Link to comment Share on other sites More sharing options...
HDPierre Posted July 2, 2014 Author Share Posted July 2, 2014 Oui je parle d'import CSV.Je vais essayer de voir si je peux créer mes champs perso nativement.Encore merci Link to comment Share on other sites More sharing options...
frieurieud Posted July 2, 2014 Share Posted July 2, 2014 En effet le principe fait déja partie de prestashop avec la personnalisation. Dans sa configuration actuel on ne peux télécharger que des images et pour y remédier il faut faire une simple modif dans le fichier admin/ajaxfilemanager/inc/config.base.php lignes 78, 81 et 83 tu ajoute pdf, ex la ligne 78: define('CONFIG_EDITABLE_VALID_EXTS', 'txt,htm,html,xml,js,css,pdf'); tu peux aussi en profiter pour ajuster la taille des fichiers qui peuvent être uploadés, ligne 74 (ici 5000 passe à 10000) //UPLOAD OPTIONS CONFIG define('CONFIG_UPLOAD_MAXSIZE', 10000 * 1024 ); //by bytes Il faut savoir que lors du téléchargement, prestashop chiffre le nom du fichier et n'a plus d'extention. Il ajoute une lettre au début (J pour jpeg et P pour pdf). Pour ma part j'ai eu besoin de garder le nom du fichier et j'ai modifié override/controllers/front/ProductController.php. Si ça t'interesse fait le moi savoir. Link to comment Share on other sites More sharing options...
HDPierre Posted July 2, 2014 Author Share Posted July 2, 2014 Merci pour les infos.Tu as réussi a les importés en csv avec le ou les champs de personnalisation ? Link to comment Share on other sites More sharing options...
frieurieud Posted July 2, 2014 Share Posted July 2, 2014 Non il n'y a que le fichier. Dans l'onglet personnalisation, tu as un bouton "parcourir" qui permet aux clients de choisir leur fichier qui sera envoyé sur ton serveur. Aucune autre information n'est téléchargé. Si je comprend bien tu veux aussi un second fichier qui contient certaines informations ? Pour ma part, en ajoutant des champs textes dans l'onglet personnalisation je récupère le nom du client et le nom du produit que j'ajoute dans le nom du fichier télécharger (plus la date). ex: 14-07-02_Dupont&Compagnie_Affiches_poster.pdf Que voudrais-tu comme infos ? Link to comment Share on other sites More sharing options...
HDPierre Posted July 3, 2014 Author Share Posted July 3, 2014 Je voulais mettre un champs texte en plus du bouton "Parcourir" pour que le client puisse donner un nom au fichier ( sinon le fichier s'appelle toujours PersonnalisationX ).Mais ton idée de rajouter 2 champs pour mettre le nom du client et pas mal du tout , je n'y avais pas pensé Si mes fichier pouvaient être de se format ( Date_nomClient_nomFichier.pdf) ça serait parfait Du coup, si tu pouvais me dire comment tu as fait tout ça, et si tu as réussis a faire l'import de produits avec ces champs, sans les rajouter a la main dans le Back office Link to comment Share on other sites More sharing options...
frieurieud Posted July 3, 2014 Share Posted July 3, 2014 (edited) Je n'avais pas testé le fait de savoir si je pouvais le récupérer dans le BO car, dans mon cas, le fichier sera envoyé sur le RIP (via un script hors prestashop). J'ai donc essayé avec et sans mes modifs, image et pdf et je n'arrive pas à les ouvrir. Dans le BO il y a bien la vignette représentant le fichier et quand je clique dessus une nouvelle fenêtre apparait mais blanche. Par contre le fichier s'ouvre bien en passant par le dossier upload. Dis-moi de ton côté si, en passant une commande fictive, tu peux ouvrir une image importée. Je vais mener mon enquête sur ce phénomène mais d'autres internautes (passant par là) ont une idée, nous sommes preneur. Edited July 3, 2014 by frieurieud (see edit history) Link to comment Share on other sites More sharing options...
frieurieud Posted July 3, 2014 Share Posted July 3, 2014 C'est bon ça marche il fallait modifier le fichier 'displayImage.php' Donc je reprend mes notes, je te prépare une explication du comment j'ai fait et te répondrai dans mon prochain message. Link to comment Share on other sites More sharing options...
HDPierre Posted July 3, 2014 Author Share Posted July 3, 2014 D'accord, merci beaucoup Link to comment Share on other sites More sharing options...
frieurieud Posted July 3, 2014 Share Posted July 3, 2014 (edited) Allez c'est partie (en plus nous avons la même version de prestashop... ça m'arrange ) : Avant de modifier quoi que ce soit, pense à sauvegarder tes fichier d'origine. Commençons par ajouter les champs texte (qui seront invisibles aux yeux du client) : MaBoutique\theme\MaBoutique\product.tpl cherche <p id="customizedDatas"> et ajoute juste en dessous de cette ligne <input type="hidden" name="infos1" value="{$customerName|escape:htmlall:'UTF-8'|regex_replace:'/&(.)(acute|grave|circ|uml|cedil|ring|tilde|slash);/':'\1'|replace:' ':'_'}" /> $customerName contient le nom et prénom de l'utilisateur et regex_replace supprime les accents et certains caractère spéciaux. Une fois que l'on clique sur le bouton en dessous 'Enregistrer', les données passent par MaBoutique\override\controllers\front\ProductController.php que nous allons modifier afin de transformer le nom du fichier. cherche if (in_array($fieldName, $authorizedFileFields) AND isset($file['tmp_name']) AND !empty($file['tmp_name'])) { $fileName = md5(uniqid(rand(), true)); et remplace le par if (in_array($fieldName, $authorizedFileFields) AND isset($file['tmp_name']) AND !empty($file['tmp_name'])) { date_default_timezone_set('Europe/Paris'); $nomFichier = $file['name']; //Récupère le nom du fichier du client if(!empty($_POST['infos1'])) { $infos = $_POST['infos1']; //Récupère l'utilisateur du champs 'info1' } else $infos = 'nolog'; //$fileName = md5(uniqid(rand(), true)); $fileName = '_'.date('y-m-d').'_'.$infos.'-'.$nomFichier; //Création du nouveau nom de fichier Et maintenant ce fameux MaBoutique\Admin\displayImage.php afin de pouvoir l'ouvrir dans le BO Remplace if (isset($_GET['img']) AND Validate::isMd5($_GET['img']) AND isset($_GET['name']) AND Validate::isGenericName($_GET['name']) AND file_exists(_PS_UPLOAD_DIR_.$_GET['img'])) { header('Content-type: image/jpeg'); header('Content-Disposition: attachment; filename="'.$_GET['name'].'.jpg"'); echo file_get_contents(_PS_UPLOAD_DIR_.$_GET['img']); } par if (isset($_GET['img']) AND file_exists(_PS_UPLOAD_DIR_.$_GET['img'])) { header('Content-Disposition: attachment; filename="'.$_GET['img'].'"'); echo file_get_contents(_PS_UPLOAD_DIR_.$_GET['img']); } Voili voilou, je pense ne rien avoir oublié mais au cas où préviens moi. Edited July 3, 2014 by frieurieud (see edit history) Link to comment Share on other sites More sharing options...
HDPierre Posted July 4, 2014 Author Share Posted July 4, 2014 Parfait Tout fonctionne pour moi, à part dans le ProductController.php ou j'ai du changer $fieldName en $field_name ( au cas où quelqu'un rencontre le même problème )Dernière question, comment puis-je mettre le champ personnalisé ( pour upload le fichier ) et le rendre obligatoire dans l'import csv de mes produits ?Encore merci ! Link to comment Share on other sites More sharing options...
frieurieud Posted July 4, 2014 Share Posted July 4, 2014 (edited) Super que ça te convienne (si ça ta plu, alors un p'tit "Like this" pour me faire plaisir ? ) Il faut prévoir 2 choses. La première, obliger le client à se connecter pour pouvoir accéder à la personnalisation car n'oublions pas que nous avons besoin de son nom pour renommer le fichier. Ensuite il faut être sûr que le fichier soit bien téléchargé (et sans erreur de téléchargement). Dans la partie personnalisation (<!-- Customizable products --> toujours dans product.tpl) il faut mettre une condition de type <!-- Customizable products --> {if $logged} Affichage du contenu standard de l'onglet personnalisation {else} Affichage d'un texte bien visible invitant l'utilisateur à se connecter pour pouvoir uploader. {/if} pour le deuxième cas et avec ce même type de condition, tu peux rendre disabled ou non le bouton 'Ajouter au panier'. Ou bien afficher un message d'alerte si l'utilisateur clique sur 'add to cart' alors qu'il n'est, soit pas connecté soit le fichier ne s'est pas bien téléchargé. Dans ces 2 cas il faut créer une variable booléenne dans le fichier ProductController.php (par exemple isFileOk) et faire ta condition avec elle dans product.tpl Si tu as d'autres questions, n'hésites pas. Edited July 4, 2014 by frieurieud (see edit history) Link to comment Share on other sites More sharing options...
HDPierre Posted July 4, 2014 Author Share Posted July 4, 2014 Comment vérifier si le fichier est bien téléchargé ?Et pour l'import ? Link to comment Share on other sites More sharing options...
frieurieud Posted July 4, 2014 Share Posted July 4, 2014 Cherche toutes les conditions avec la variable $errors et ajoute à la suite ta variable (à false car erreur de chargement) et continue ces même conditions avec un else pour attribuer ta variable à true. N'oublie de créer ta variable et de lui attribuer la valeur false par défaut. Qu'est ce que tu entends par import csv les champs textes ? Si c'est ça, à mon sens ce n'est pas ProductController.php qui s'en occupe (lui ne fait que télécharger les images). Mais là il faut que je cherche la bête qui s'en occupe. Si toi ou moi avons du nouveau, on se tient au courant. Link to comment Share on other sites More sharing options...
HDPierre Posted July 7, 2014 Author Share Posted July 7, 2014 Ce que j'entends par import csv , c'est : http://doc.prestashop.com/display/PS15/Understanding+the+Advanced+Parameters#UnderstandingtheAdvancedParameters-CSVImportEt je souhaiterais que la mise en place du champs personnalisé (d'upload du fichier) se fasse dès l'import de mes produits Link to comment Share on other sites More sharing options...
frieurieud Posted July 7, 2014 Share Posted July 7, 2014 J'avoue ne pas bien comprendre ce que tu cherche à vouloir faire. D'un coté nous avons, comme l'explique ton lien, l'import de fichiers csv pour remplir ta boutique. C'est un fichier csv que tu auras préparé préalablement avec ton tableur excel par exemple. De l'autre côté nous avons le client qui envoie sur ton serveur une image et, si il y a des champs prévus, du texte. Mais dans ce cas tu n'as pas de fichiers csv. Le texte saisie par le client est récupéré dans une variable et sera retransmis dans le BO. C'est pour cela que je ne comprend pas pourquoi tu veux du csv, quel est le but recherché. Sinon, dans le BO dans la partie personnalisation, après avoir indiqué le nombre de champs texte que tu souhaite et après avoir 'Enregistrer et rester', tu pourras cocher les case 'requis'. Dans le FO la saisie sera obligatoire. Link to comment Share on other sites More sharing options...
HDPierre Posted July 7, 2014 Author Share Posted July 7, 2014 Ce que je cherche a faire n'est pas du coté client.Je voudrais que ce champs de personnalisation apparaisse sur tous mes produits, or j'ai pour le moment 5000 produits et je vais surement en avoir plus, et je ne vais pas rentrer mes produits un à un et ajouter mon champs personnalisé et cocher la case pour le rendre obligatoire pour chaque produit.C'est pour ça que je souhaiterais , lors de mon import csv de tous mes produits, créer le champs personnalisé et le rendre obligatoire.Mais je ne sais pas comment faire ça dans mon csv :/ Link to comment Share on other sites More sharing options...
frieurieud Posted July 7, 2014 Share Posted July 7, 2014 du coup ce que je t'ai dis plus haut ne sert à rien, pour la vérification du fichier téléchargé Ben oui, je viens de me rendre compte que comme pour les champs textes une case 'requis' existe pour les fichiers... Ah la la! code quand tu nous tiens. Et moi qui voulais réécrire prestashop en prestashiot Link to comment Share on other sites More sharing options...
frieurieud Posted July 7, 2014 Share Posted July 7, 2014 Bon soyons sérieux Que doit-il y avoir d'inscrit dans ce champ exactement ? Link to comment Share on other sites More sharing options...
HDPierre Posted July 7, 2014 Author Share Posted July 7, 2014 Et bien je voudrait :Champ fichier : 1Définissez les libellés des champs fichiers : Votre fichierEt que la case soit cocher pour obligatoire Mais je n'ai aucune idée de comment faire ça dans mon import Link to comment Share on other sites More sharing options...
neoclust Posted May 22, 2016 Share Posted May 22, 2016 En effet le principe fait déja partie de prestashop avec la personnalisation. Dans sa configuration actuel on ne peux télécharger que des images et pour y remédier il faut faire une simple modif dans le fichier admin/ajaxfilemanager/inc/config.base.php lignes 78, 81 et 83 tu ajoute pdf, ex la ligne 78: define('CONFIG_EDITABLE_VALID_EXTS', 'txt,htm,html,xml,js,css,pdf'); tu peux aussi en profiter pour ajuster la taille des fichiers qui peuvent être uploadés, ligne 74 (ici 5000 passe à 10000) //UPLOAD OPTIONS CONFIG define('CONFIG_UPLOAD_MAXSIZE', 10000 * 1024 ); //by bytes Il faut savoir que lors du téléchargement, prestashop chiffre le nom du fichier et n'a plus d'extention. Il ajoute une lettre au début (J pour jpeg et P pour pdf). Pour ma part j'ai eu besoin de garder le nom du fichier et j'ai modifié override/controllers/front/ProductController.php. Si ça t'interesse fait le moi savoir. Bonjour, hélas ceci ne semble plu possible dans presta 1.6, ou alors le code a changé et la modif doit etre apliquée qqpart d'autre. Savez vous ce qu'il faut modifier pour que ce soit faisable avec prestashop 1.6 ? Merci d'avance. Link to comment Share on other sites More sharing options...
frieurieud Posted May 23, 2016 Share Posted May 23, 2016 Bonjour Neoclut, effectivement cela n'est plus possible avec la 1.6 et malheureusement je n'ai pas la solution. Au final (et pour des besoins que ne pouvaient m'apporter le téléchargement des fichiers par la fiche produit) j'ai opté pour un téléchargement de tous les fichiers au niveau du panier. Il fonctionne sur la 1.5 et je ne l'ai pas encore testé sur la 1.6 Désolé Link to comment Share on other sites More sharing options...
koule Posted April 18, 2017 Share Posted April 18, 2017 Bonjour, Je cherche à ajouter des formats de fichiers supplémentaires à Upload pour le client, sur la page produit.Déjà les formats acceptés sont GIF, JPG, PNG, et quand j'ajoute un .jpg ça ne fonctionne déjà pas. De plus je voudrais ajouter le format pdf, le format psd, mais aussi le xls ? J'ai l'impression que la solution donnée par neoclust pourrait fonctionner, sauf que je suis en 1.6.12 Avez vous eu des nouvelles depuis le dernier post ? Merci d'avance pour vos réponses Link to comment Share on other sites More sharing options...
brutdeframboise Posted June 16, 2017 Share Posted June 16, 2017 (edited) Bonjour à tous ! Avez-vous eu des news pour l'ajout du format pdf dans la personnalisation produit pour la version 1.6.1.12 ? Merciii Edited June 16, 2017 by brutdeframboise (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now