boxerprod Posted May 19, 2010 Share Posted May 19, 2010 Bonjour,Malgré mes recherches sur le forum , je n'ai pas trouvé de post qui me donne toutes les infos.Ce que je veux faire :-> ajouter un champ texte supplémentaire de description pour les produits-> ce champ est renseigné en Back Office et s'affiche en Front office bien entendu.Version utilisée : PrestaShop v.1.3 RC 6Voilà ce que j'ai fait déjà :Modif classes/product.php (déclaration de ma variable $equipement)ligne 147 : public $equipement; ligne 262 : function get Fields() $fields['equipement'] = pSQL($this->equipement); Modif admin/tabs/AdminProducts.phpligne 1912 echo ' '.$this->l('Description:').' '; foreach ($this->_languages as $language) echo ' <textarea class="rte" cols="100" rows="20" id="equipement_'.$language['id_lang'].'" name="equipement_'.$language['id_lang'].'">'.$this->getFieldValue($obj, 'equipement').'</textarea> '; echo ' '; Dans la table ps_products :J'ai crée un champ 'equipement' en "TEXT" / utf8_general_ciEt dans mon fichier product.tpl J'appelle l'affichage de mon champ comme ca :{$product->equipement}Ce qui marche :Si je rempli à la main le champ "equipement" en base de donnée , il s'affiche bien en Back Office et en Front office.Mais si je modifie le texte en Back-office et que je sauvegarde , la modif n'est pas enregistrée en Base de donnée.Il y a donc un truc que je loupe.Une petite idée ?Merci Link to comment Share on other sites More sharing options...
boxerprod Posted May 19, 2010 Author Share Posted May 19, 2010 Bon première correction (dites moi si je me trompe)Le champ "equipement" (dans mon cas) pouvant contenir du HTML une petite modif est à faire :Dans classe/product.php (ligne 262 environ) : $fields['equipement'] = pSQL($this->equipement); il faut ajouter le 'true' sinon tout le code HTML est nettoyé $fields['equipement'] = pSQL($this->equipement,true); Par contre je n'arrive toujours pas à écrire les modif faites en BO dans la base de donnée.Help ! please Link to comment Share on other sites More sharing options...
boxerprod Posted May 19, 2010 Author Share Posted May 19, 2010 Bon alors... J'ai trouvé..A noter que cela ne s'applique qu'à la version Version 1.3.0.9 comme je ne suis pas un expert , ne faites pas ces modifs sur votre boutique en production.Faites un essai en local avant.Vous pouvez appeller votre champ comme vous le souhaitez , le miens pour l'exemple est equipementDonc les modifs pour : -> ajouter un champ text pouvant contenir du HTML en plusieurs langues -> editable en Back Office avec l'editeur tinyMCE -> qui s'affiche dans product.tplIMPORTANT : Ne pas faire la modif juste après ,postée précédemment : $fields['equipement'] = pSQL($this->equipement,true); Dans votre base donnée ajoutez dans la table ps_products_lang un champ TEXT , classement utf8_general_ci , NULL (ici 'equipement')Dans class/Product.php :En début vers la ligne 147 : public $equipement; dans la fonction getTranslationsFieldsChild() après : $fields[$language['id_lang']]['description_short'] = (isset($this->description_short[$language['id_lang']])) ? pSQL($this->description_short[$language['id_lang']], true) : ''; ajoutez : $fields[$language['id_lang']]['equipement'] = (isset($this->equipement[$language['id_lang']])) ? pSQL($this->equipement[$language['id_lang']], true) : ''; Après protected $fieldsValidate = array( 'id_tax' => 'isUnsignedId', 'id_manufacturer' => 'isUnsignedId', .... couper pour pas faire trop long .... 'active' => 'isBool', 'ean13' => 'isEan13', ajouter : 'equipement' => 'isCleanHtml' Dans protected $fieldsValidateLang = array( 'meta_description' => 'isGenericName', 'meta_keywords' => 'isGenericName', 'meta_title' => 'isGenericName', 'link_rewrite' => 'isLinkRewrite', 'name' => 'isCatalogName', 'description' => 'isString', 'description_short' => 'isString', 'available_now' => 'isGenericName', 'available_later' => 'IsGenericName'); ajoutez : 'equipement' => 'isString' Dans admin/tabs/AdminProduct.php :ajoutez vers la ligne 1912: echo ' '.$this->l('Equipement :').' '; foreach ($this->_languages as $language) echo ' <textarea class="rte" cols="100" rows="20" id="equipement_'.$language['id_lang'].'" name="equipement_'.$language['id_lang'].'">'.htmlentities(stripslashes($this->getFieldValue($obj, 'equipement', $language['id_lang'])), ENT_COMPAT, 'UTF-8').'</textarea> '; echo ' '; Dans votre fichier product.tpl de votre thème actif :ajoutez là ou vous voulez que ce champ s'affiche {if $product->equipement}{$product->equipement}{/if} Voilà , j'éspère que celà fonctionnera pour vous , chez moi celà fonctionne. Link to comment Share on other sites More sharing options...
justweb Posted May 19, 2010 Share Posted May 19, 2010 Hello Boxerprod,Merci pour ce tuto !!!Je l'ai testé et il fonctionne mais sans ajouter : 'equipement' => 'isCleanHtml'J'utilise la version 1.3 RC6 Link to comment Share on other sites More sharing options...
boxerprod Posted May 20, 2010 Author Share Posted May 20, 2010 De rien , je t'avoue que j'ai tellement galéré pour y arriver que ca fait plaisirde partager le truc et faire gagner du temps.Merci pour l'info du isCleanHtml ( à voir si c plus sur avec ou sans)Je crois que le isCleanHtml permet de vérifier qu'il n'y a pas de mauvais code injecté.. (à confirmer) Link to comment Share on other sites More sharing options...
justweb Posted May 20, 2010 Share Posted May 20, 2010 Hello,En fait j'ai ajouté un champ avec editeur de texte, c'est pour cela que ça ne marchait pas avec isCleanHtml.J'ai également réussi à ajouter un champ personnalisé dans la fiche catégorie dans le BO. Je publierai un tuto dès que j'aurai un peu de temps. Link to comment Share on other sites More sharing options...
cockpitinferno Posted June 25, 2010 Share Posted June 25, 2010 bonjour, je viens d'essayer en suivant le tuto mais ca fonctionne pas j'ai pas el champ dnas la fiche produit.comme évoqué dans un autre post je souhaite ajouter un champ pour indiquer que mon article est d'occasion puis ajouter un macaron comme pour els soldes mais pour les articles d'occase.si vous avez des idées... Link to comment Share on other sites More sharing options...
cockpitinferno Posted June 25, 2010 Share Posted June 25, 2010 bonjour, je viens d'essayer en suivant le tuto mais ca fonctionne pas j'ai pas el champ dnas la fiche produit.comme évoqué dans un autre post je souhaite ajouter un champ pour indiquer que mon article est d'occasion puis ajouter un macaron comme pour els soldes mais pour les articles d'occase.si vous avez des idées... Link to comment Share on other sites More sharing options...
ctalpaert Posted September 23, 2010 Share Posted September 23, 2010 Bonjour Il existe une solution _beaucoup_ plus simple si vous avez simplement besoin d'un champ texte ou d'un menu déroulant.Dans le Backoffice: Onglet *Catalogue* puis *Caractéristiques*, vous définissez les attributs supplémentaires à ajouter a votre produit.Ensuite vous pourrez remplir ces attributs pour chaque produit dans la fiche produit à l'onglet *Caract.*Enfin sur le Frontoffice, si ces caractéristiques supplémentaires sont disponible, un onglet *Fiche technique* apparaîtra contenant ces fameuses caractéristiques. Sinon cet onglet restera masqué.-- Cédric Talpaerthttp://www.numeriforge.com Link to comment Share on other sites More sharing options...
boxerprod Posted September 23, 2010 Author Share Posted September 23, 2010 Oui mais solution n'est pas adaptée lorsque tu veux que ce nouveau champ apparaisse directement sur la page produit et non pas dans l'onglet. Link to comment Share on other sites More sharing options...
ctalpaert Posted September 23, 2010 Share Posted September 23, 2010 Au contraire, il suffit simplement de modifier le template (fichier product.tpl) pour adapter l'affichage sur le site. Ainsi on ne touche ni aux classes ni au backoffice.On pourra donc continuer à mettre Prestashop à jour sans écraser notre code.-- Cédric Talpaerthttp://www.numeriforge.com Link to comment Share on other sites More sharing options...
JO BASTRE Posted November 24, 2010 Share Posted November 24, 2010 Bonjour cTalpaertta solution m'interesse Peux-tu etre plus precis sur la modification du template dont tu parles?Merci Link to comment Share on other sites More sharing options...
phil46 Posted November 24, 2010 Share Posted November 24, 2010 Re,Moi aussi@ctalpaert. Tu m'as l'air d'un pro pourtant en allant faire un tour sur ton site WWW je vois au niveau du moteur de rechercheSEARCH.........search in this site Là à mon avis y'a un HICidem pour le formulaire de contacthttp://www.numeriforge.com/contactA + Link to comment Share on other sites More sharing options...
ctalpaert Posted December 5, 2010 Share Posted December 5, 2010 BonsoirOui effectivement pour mon site, comme on dit c'est toujours le cordonnier le plus mal chaussé, il va bien falloir que je me décide à y passer un peu de temps dessus. Mais pour revenir à la question posée, voici un exemple concret avec la fiche produit du template fourni avec Prestashop (version 1.3.3.0)fichier themes/prestashop/product.tpl ligne 330 à 343 {if $product->description || $features || $accessories || $HOOK_PRODUCT_TAB || $attachments} {if $product->description}{l s='More info'}{/if} {if $features}{l s='Data sheet'}{/if} {if $attachments}{l s='Download'}{/if} {if isset($accessories) AND $accessories}{l s='Accessories'}{/if} {$HOOK_PRODUCT_TAB} {if $product->description} <!-- full description --> {$product->description} {/if} Link to comment Share on other sites More sharing options...
Marsh Posted January 27, 2011 Share Posted January 27, 2011 Bonjour,Ce poste date mais je crois qu'il serait une bonne solution à ce que je recherche.Est il possible de mettre un code pour que cette caractéristique qu'on met sous le prix, s'affiche également sous le prix dans product-list? Link to comment Share on other sites More sharing options...
ctalpaert Posted January 30, 2011 Share Posted January 30, 2011 Oui bien sûr, il suffit de placer $product->description entre les balises {foreach} dans le fichier product-list.tpl > <!-- Products list --> </pre> <ul> {foreach from=$products item=product name=products} [...] $product->description [...] {/foreach} </ul> <br> <!-- /Products list --> Note, les [...] représente du code SMARTY et HTML qui constitue la structure du bloc, a vous de voir à quel endroit il convient de le placer. Link to comment Share on other sites More sharing options...
Rioo Posted February 22, 2011 Share Posted February 22, 2011 Merci pour les infos,J'ai un besoin bien particulier sur prestashop 1.3.X c'est d'ajouter des champ date_debut et date_fin dans la table product.J'ai ajouter les champs dans la base en DATETIME puis dans la classe Product. En fin, dans le tab AdminProduct. Par contre, a l'enregistrement de la nouvelle fiche produit la date n'est pas conservée elle reste à 0000-00-00 00:00:00Si quelqu'un a une piste ...Bonne journée 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