[Prestashop 1.4.x] Ajouter un champ sur une fiche produit

Voici une petite astuce Prestashop qui va vous permettre d’ajouter un champ dans votre fiche produit. En clair, cette astuce vous permettra d’ajouter une zone de saisie dans votre back-office afin d’afficher un contenu personnalisé, unique à chaque produit.

Cette astuce est valable pour les versions 1.4.x.

 

La classe ‘Product’

A la racine de votre site, rendez-vous dans /classes/Product.php.

A la suite des variables publiques déclarées, ajoutez

public $monChamp;

 

Allez ensuite à la fonction getTranslationsFieldsChild() et remplacez la valeur de la variable protected $fieldsValidate par :

array( 'id_tax' => 'isUnsignedId', 'id_manufacturer' => 'isUnsignedId', .... couper pour pas faire trop long .... 'active' => 'isBool', 'ean13' => 'isEan13', 'monChamp' => 'isCleanHtml');

Remplacez ensuite la valeur de la variable protected $fieldsValidateLang par :

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','monChamp' => 'isString');

 

Modification du back-office de Prestashop

Nous allons maintenant devoir créer le champ associé à cette nouvelle variable dans l’administration des produits.

Pour ce faire, allez dans /tabs/AdminProduct.php. et ajouter dans le HTML (à la fin du document) le code suivant :

echo ' '.$this->l('Label de mon champ :').' '; foreach ($this->_languages as $language) echo ' < textarea class="rte" cols="100" rows="20" id="monChamp_'.$language['id_lang'].'" name="monChamp_'.$language['id_lang'].'">'.htmlentities(stripslashes($this->getFieldValue($obj, 'monChamp', $language['id_lang'])), ENT_COMPAT, 'UTF-8').'

 

Ajouter le champ dans la base de données

Enfin, nous devons créer l’endroit ou sera stocké ce contenu dans la base de données.

Ajouter donc le champ monChamp dans la table PREFIXE_product_lang.

Et voilà, votre nouveau champ est créé, il ne nous reste plus qu’a l’appeler dans le template.

 

Affichage du contenu personnalisé

Après avoir ajouter du contenu dans votre nouveau champ texte puis sauvegardé, rendez-vous dans /themes/votre_theme/product.tpl et ajoutez ce code à l’endroit où vous voulez faire apparaître votre contenu :

{$product->monChamp}

 

Voilà pour cette astuce, j’espère qu’elle vous aura été utile. En dérivant légèrement cette méthode, vous pourrez également ajouter un champ dans vos catégories par exemple.

5 commentaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *