BVince Posted December 15, 2010 Share Posted December 15, 2010 Bonjour à tous,je trouvais utile d'ajouter un pictogramme sur les valeurs des caractéristiques, de cette manière on peut afficher une fiche produit avec un ensemble de pictogrammes, cette possibilité n'est réalisable qu'en modifiant Prestashop et je vous explique ici comment réaliser ces modifications :1 - Fichier "defines.inc.php" du dossier "config", nous allons ajouter cette ligne : define('_PS_PICTO_IMG_DIR_', _PS_IMG_DIR_.'picto/'); ATTENTION : parallèlement à cette modification, nous allons créer un dossier "picto" dans le dossier "img" du site et lui attribuer les droits en écriture CHMOD 777.2 - Fichier "Product.php" du dossier "classes", on va chercher la fonction "getFrontFeaturesStatic", et ajouter un champ dans la liste select, la fonction deviendra ceci après modification : static public function getFrontFeaturesStatic($id_lang, $id_product) { return Db::getInstance()->ExecuteS(' SELECT name, value, pf.id_feature, fvl.id_feature_value FROM '._DB_PREFIX_.'feature_product pf LEFT JOIN '._DB_PREFIX_.'feature_lang fl ON (fl.id_feature = pf.id_feature AND fl.id_lang = '.intval($id_lang).') LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = pf.id_feature_value AND fvl.id_lang = '.intval($id_lang).') WHERE pf.id_product = '.intval($id_product)); } 3 - Fichier "AdminFeaturesValues.php" du dossier "votreAdmin/tabs/" :a - juste avant : parent::__construct(); nous allons ajouter $this->fieldImageSettings = array('name' => 'logo', 'dir' => 'picto'); b - dans la fonction "displayForm", nous allons chercher la FORM et ajouter ceci dans ses propriétés : enctype="multipart/form-data" ce qui donne <form action="'.$currentIndex.'&submitAdd;'.$this->table.'=1&token;='.Tools::getValue('token').'" method="post" enctype="multipart/form-data"> c - nous allons maintenant intégrer l'image dans le formulaire à l'aide du code suivant entre 2 div : echo ' '.$this->l('Logo:').' '; $this->displayImage($this->getFieldValue($obj, 'id_feature_value'), _PS_PICTO_IMG_DIR_.$this->getFieldValue($obj, 'id_feature_value').'.jpg', 350, NULL, Tools::getValue('token')); echo ' <input type="file" name="logo" /> '.$this->l('Upload pictogramme logo from your computer').' '; le mieux étant de l'intégrer juste avant : <input type="submit" value="'.$this->l(' Save ').'" name="submitAdd'.$this->table.'" class="button" /> ce qui donne un pied de formulaire équivalent à ceci : $features = Feature::getFeatures($this->_defaultFormLanguage); foreach ($features AS $feature) echo 'getFieldValue($obj, 'id_feature') == $feature['id_feature']? ' selected="selected"' : '').'>'.$feature['name'].''; echo ' * '; //AJOUTER PAR BVINCE echo ' '.$this->l('Logo:').' '; $this->displayImage($this->getFieldValue($obj, 'id_feature_value'), _PS_PICTO_IMG_DIR_.$this->getFieldValue($obj, 'id_feature_value').'.jpg', 350, NULL, Tools::getValue('token')); echo ' <input type="file" name="logo" /> '.$this->l('Upload pictogramme logo from your computer').' '; //****************** echo ' <input type="submit" value="'.$this->l(' Save ').'" name="submitAdd'.$this->table.'" class="button" /> * '.$this->l('Required field').' </form>'; Et voilà, à partir de là, votre back office permet maintenant de mettre une image sur la valeur de la caractéristique...Nous devons maintenant passer à l'étape affichage en Front Office des différentes images disponibles pour chaque valeur de caractéristique affectées à un produit. Link to comment Share on other sites More sharing options...
BVince Posted December 15, 2010 Author Share Posted December 15, 2010 4 - Fichier "product.php" à la racine de votre siteNous allons chercher ce groupe de lignes : $features = $product->getFrontFeatures(intval($cookie->id_lang)); $attachments = $product->getAttachments(intval($cookie->id_lang)); et on va coller ce code juste après : if(sizeof($features)) foreach($features as $key=>$feature) if(is_file(dirname(__FILE__).'/img/picto/'.$feature['id_feature_value'].'.jpg')) $features[$key]['imageLink'] = __PS_BASE_URI__.'img/picto/'.$feature['id_feature_value'].'.jpg'; ceci permettra d'envoyer au smarty les informations nécessaires concernant l'image affectée à la valeur de la caractéristique.5 - Fichier "product.tpl" dans votre thèmeSous le code {if $have_image} getImageLink($product->link_rewrite, $cover.id_image, 'large')}" {if $jqZoomEnabled}class="jqzoom" alt="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'thickbox')}"{else} title="{$product->name|escape:'htmlall':'UTF-8'}" alt="{$product->name|escape:'htmlall':'UTF-8'}" {/if} id="bigpic" width="{$largeSize.width}" height="{$largeSize.height}" /> {else} name|escape:'htmlall':'UTF-8'}" /> {/if} on va ajouter {if $features} <!-- product's features --> {foreach from=$features item=feature} {if $feature.imageLink} {/if} {/foreach} {/if} ce qui va permettre d'afficher sous votre photo produit, l'ensemble des pictos concernant le produit.Annexe 1 : Présentation du Back OfficeAnnexe 2 : Présentation du Front Office Link to comment Share on other sites More sharing options...
ethan42 Posted January 10, 2011 Share Posted January 10, 2011 Bonjour,je rencontre 2 problèmes en voulant intégrer ce code :1. dans la Back Office, j'ai le message suivant lorsque je veux télécharger une image :"Clef de sécurité incorrecte"2. dans le front office, j'ai un message d'erreur lorsque je veux voir un produit :Fatal error: Smarty error: [in /home/ispcp/www/virtual/des-voiles-et-moi.com/htdocs/themes/prestashop/product.tpl line 117]: syntax error: unrecognized tag: $feature.name|escape:'htmlall':'UTF-8 (Smarty_Compiler.class.php, line 446) in /home/ispcp/www/virtual/des-voiles-et-moi.com/htdocs/tools/smarty/Smarty.class.php on line 1095 Pourriez-vous m'éclairer ?merci.a+ethanPS 1.3.5 Link to comment Share on other sites More sharing options...
ethan42 Posted February 2, 2011 Share Posted February 2, 2011 Quelqu'un aurait-il une autre solution ? existerait-il un module faisant cela ?Quelqu'un serait-il prêt à programmer un module de ce genre ? Je suis prêt pour acheter un module faisant apparaître des images dans les caractéristiques.Merci pour vos réponses.Ethan Link to comment Share on other sites More sharing options...
papich Posted July 11, 2011 Share Posted July 11, 2011 Ca marche sous PS 1.4? Link to comment Share on other sites More sharing options...
stanza104 Posted July 15, 2011 Share Posted July 15, 2011 cc,j ai tester votre module il marche bien dans le backoffice mais je récupère rien dans le front-office,y aura-t-il d'autre piste svp Link to comment Share on other sites More sharing options...
fdavid67 Posted April 16, 2012 Share Posted April 16, 2012 Je me permet de remonter ce topic car j'ai vraiment besoin d'integrer cette fonction sur mon site. Je suis bloqué à cette partie ; 4 - Fichier "product.php" à la racine de votre site Nous allons chercher ce groupe de lignes : Mon problème est que ce fichier est vide dans la version 1.4.6, je ne sais donc pas comment déclarer au smarty les images. Si quelqu'un pourrait m'aider, merci. Link to comment Share on other sites More sharing options...
fdavid67 Posted April 16, 2012 Share Posted April 16, 2012 J'ai finalement trouver le fichier et ajouter les lignes, mais dans la fiche produit, rien n'apparait. Je pense que ça à un lien avec $feature.imageLink, mais je ne connais pas grand chose en php et je ne trouve pas ce qui cloche.. Link to comment Share on other sites More sharing options...
fdavid67 Posted April 17, 2012 Share Posted April 17, 2012 En supprimant cette ligne du code cité plus haut if(is_file(dirname(__FILE__).'/img/picto/'.$feature['id_feature_value'].'.jpg')) j'arrive à voir les images, seulement j'ai autant d'image que de caracteristique, alors que je n'ai attribué qu'une image. Il me faudrait une condition du type "pour chaque image" au lieu de" pour chaque caracterstique". J'espere être assez clair, il est tard Link to comment Share on other sites More sharing options...
fdavid67 Posted April 17, 2012 Share Posted April 17, 2012 Personne ? Link to comment Share on other sites More sharing options...
fdavid67 Posted April 17, 2012 Share Posted April 17, 2012 Si je comprend bien mon problème, en gardant cette ligne : if(is_file(dirname(__FILE__).'/img/picto/'.$feature['id_feature_value'].'.jpg')) ça ne fonctionne pas. En l'enlevant, j'ai autant de balise image que de caractéristique, même si je n'ai attribuer aucune image. Donc cette fameuse ligne de code sert à créer la variable imageLink seulement pour les caractéristique dont une image à était attribué. Je suppose qu'il n'y à pas grand chose à modifier pour rendre tout ça fonctionnel si seulement un connaisseur pouvait juste me modifier ce code. Link to comment Share on other sites More sharing options...
fdavid67 Posted April 21, 2012 Share Posted April 21, 2012 J'ai finalement réussis, mais j'ai encore un autre souçis. Je voudrais également ajouter les pictogrammes sur la page product-list, mais la variable $feature.imagelink ne fonctionne pas. Une idée ? Link to comment Share on other sites More sharing options...
fdavid67 Posted April 21, 2012 Share Posted April 21, 2012 Décidément, je n'aurais jamais de réponse sur ce forum. Je suis vraiment déçu Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 31, 2012 Share Posted October 31, 2012 Salut BVince Pour la 1.5 ce tuto est-il encore valable ? Je voudrais afficher des pictos sur mes fiches produit sans y passer mes dimanches ;-) Merci d'avance Si il existe un petit module je suis preneur également Link to comment Share on other sites More sharing options...
neastea18 Posted February 18, 2013 Share Posted February 18, 2013 Bonjour, je voulais savoir si quelqu'un avait réussi à réparer cette astuce sur PrestaShop 1.4.9 ? L'url de l'image n'étant pas transmis ... Link to comment Share on other sites More sharing options...
NewTechno Posted February 28, 2013 Share Posted February 28, 2013 Up je suis le topic et je voudrais savoir si il existe déja un module. Cordialement,Newtechno 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