[Prestashop 1.5+ | 1.6+] Ajouter un champ zone de texte (textarea) produit

Voici aujourd’hui une solution pour ajouter un champ de type « textarea » dans la gestion des produits sur Prestashop 1.5+.

Cette technique fonctionne à partir de la version 1.5.3 de Prestashop. Pour les versions 1.4.x, consultez ce tutoriel : Ajouter un champ avec éditeur sur la page produit de Prestashop 1.4.x

Ce tuto est fonctionnel pour les versions 1.5 et 1.6.

Voici donc comment nous allons pouvoir rajouter un champ « Points Forts » sur les fiches produit.

 

I ) Ajout du champ dans la base de données

Rendez-vous dans votre base de données et ajoutez un champ « pointsforts » de type « Text » dans la table PREFIX_product_lang.

 

II ) Modification de la classe Product

Versions 1.5.3.x : Rendez-vous dans /override/classes/Product.php. Ajoutez-y les lignes suivantes :

public $pointsforts;

public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null)
{
  Product::$definition['fields']['pointsforts'] = array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isString');
  parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
}

 

Versions 1.5.4+ : Si vous avez une version de Prestashop supérieure ou égale à celle-ci, vous devez créer le fichier d’override « Product.php » dans /override/classes/. Son contenu doit ressembler à cela dans le cas présent :

<?php

class Product extends ProductCore
{
	public $pointsforts;

	public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null)
	{
	  Product::$definition['fields']['pointsforts'] = array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isString');
	  parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
	}

}

 

III ) Modifier la vue backoffice

Rendez-vous dans admin/themes/default/template/controllers/products/informations.tpl et copiez ce fichier.

Collez-le ensuite dans /override/controllers/admin/templates/products/informations.tpl

En s’inspirant de la ligne 290, collez le code suivant, qui va créer le champ texte :

<tr>
	<td class="col-left">
		{include file="controllers/products/multishop/checkbox.tpl" field="pointsforts" type="tinymce" multilang="true"}
		<label>{$bullet_common_field} {l s='Points forts :'}<br /></label>
		<p class="product_description">({l s='Les points forts du produit'})</p>
	</td>
	<td style="padding-bottom:5px;">
		{include file="controllers/products/textarea_lang.tpl" languages=$languages
			input_name='pointsforts'
			input_value=$product->pointsforts
		}
		<p class="clear"></p>
	</td>
</tr>

 

IV ) Affichage en front-office

Il ne vous reste plus qu’à afficher ce champ en front-office. Pour ce faire, modifiez le fichier /themes/votre_theme/product.tpl et ajoutez ce qui suit à l’endroit que vous souhaitez :

{$product->pointsforts}

Si vous souhaitez afficher la valeur de votre nouveau champ sur la page des catégories, rendez-vous dans /classes/Category.php et copiez la fonction getProducts() (ligne 742 approximativement).

Collez cette fonction dans le fichier /override/classes/Category.php (à créer s’il n’existe pas), et modifiez-y la requête ($sql) , en rajoutant pl.pointsforts dans le SELECT.

 

Çà ne fonctionne pas ?

Solution 1

En cas de problème, vérifiez que la compilation est bien désactivée.

Pour cela, rendez-vous dans Paramètres avancés > Performances et modifiez les options suivantes :

  • Cache des templates : Forcer la compilation à chaque appel
  • Cache : Non (X)
  • Pour les versions 1.5.6, cliquez aussi sur le bouton « Effacer le cache de Smarty et le cache de l’Autoload ».

Une fois cela fait, réessayez. Cela devra fonctionner.

Si tout est bon, pensez cependant à re-modifier ces informations et de les remettre sur :

  • Cache des templates : Ne jamais recompiler les fichiers de templates
  • Cache : Oui

Sans quoi, votre site va se mettre à ramer horriblement.

 

Solution 2

De plus, si vous venez de créer les fichiers overridés spécifiquement pour ce tuto, il est impératif de vider le cacher de l’autoload.

Pour ce faire, vous pouvez :

  • supprimer le fichier class_index.php dans le dossier /cache
  • en 1.5.5+, aller dans Préférences > Performances et en cliquant sur « Vider le cache » dans la toolbar

Si vous rencontrez toujours un problème, n’hésitez pas à laisser un commentaire ci-dessous.

 

268 commentaires

  1. Karakzho a écrit :

    Bonjour,
    Tout d’abord, merci pour ce tuto.
    J’ai tout de même un soucis.
    Le Textarea est bien dans le Backoffice mais il ne garde pas les informations que j’entre et rien ne s’affiche dans le Front office.
    Je précise que j’ai du créer le dossier products dans /overrides/controllers/admin/templates/products/informations.tpl

    Avez-vous une solutions?

    Merci

    • admin a écrit :

      Bonjour Karakzho, pouvez-vous me dire quelle version de Prestashop vous utilisez ? En effet, il semblerait que cette astuce ne marche que depuis la version 1.5.3.1 (l’équipe de Prestashop aurait rendu cela possible pour les textareas uniquement à ce moment là).

      • Karakzho a écrit :

        Tout d’abord, merci de cette réponse rapide.
        Le soucis, est que j’utilise PrestaShop 1.5.3.1
        Faut-il que j’insert les nouveaux paramètres dans les fichiers existant au lieu de les copier?

        • admin a écrit :

          Non ce n’est pas la peine. Le principe même de l’override veut que les modifications apportées à ces fichiers « écrasent » les lignes correspondantes du fichier existant. Je vous invite cependant à revérifier les points suivants :
          – II ) Modification de la classe Product => Le nom de la variable doit être changé à deux endroits
          – III ) Modifier la vue backoffice => Idem, il y 2 occurrences du mot « pointsforts » à remplacer par votre variable

          Notez également que le nom de votre variable doit être absolument identique au nom du champ dans la table product_lang.

          • Karakzho a écrit :

            Effectivement, à force de tester beaucoup de chose, j’ai oublié de changer les noms des variables dans la partie III) .

            Merci beaucoup de votre aide

      • phelippart a écrit :

        Bonjour Pauline

        excuser moi de vous déranger j’ai un site prestashop version 1 5 4 1 comme mettre un produit en avant pour qu’il ce retrouve sur page d’accueil est que une personne peut m’aider

  2. Pierre a écrit :

    Bonjour,
    J’ai egalement le probleme d’enregistrement dans la BD.
    J’ai verifié, j’ai bien fait les modifications (modification du nom de variable a chaque etape + creation/copie des ficheirs etc…)
    le champ s’affiche dans l’admin, mais les infos ne sont pas enregistrées.
    De meme, si je passe directement dans la BD pour inserer le texte (via phpmyadmin), le contenu n’est pas repris dans l’admin.
    Par contre, il s’affiche bien sur le front.
    merci de votre aide

    • admin a écrit :

      Bonjour,
      A lire le comportement que vous obtenez, il est quasi certain qu’il s’agit pourtant bel et bien d’un problème de nom de variable. Avez-vous bien rajouté le champ dans la table product_lang et non product ? Avez-vous bien vérifier que toutes les occurrences « pointsforts » aient bien été remplacées par le nom de votre variable ?

  3. Patrick a écrit :

    Bonjour,
    Un grand merci pour le tuto qui est très clair et très simple (du moment qu’on suit les instruction …. je sais parfois je suis un boulet! 😉 ) bref ça fonctionne très bien!

    • admin a écrit :

      Bonjour,

      Lorsque vous avec enregistrez votre produit, allez dans la base de données et vérifiez si le texte est bien présent.
      S’il l’est, vous avez certainement oublié de modifier la ligne « input_value=$product->votre_champ » de l’étape 3.
      S’il ne l’est pas, je vous invite à revérifier le nom de votre champ dans toutes les étapes.

      • Julien a écrit :

        Merci de votre réponse rapide.

        Quand je enregistre le produit, le contenu sur le textarea il s’efface.
        Le nom de mon champ est correct sur toutes les étapes.
        Dans la base de donnée le texte n’est pas présent c’est écrit Null.
        Cordialement,

        PS: je suis sous PrestaShop™ 1.5.4.0

          • Julien a écrit :

            Le champ de ma base de donnée est bien de type texte .
            Il a les même configs que celui de description ou de description_short.
            Même quand je rentre dans ma base de donnée manuellement ça ne fonctionne pas.

          • P.Ghiazza a écrit :

            Benjamin,

            Le problème de Julien était un problème de code pur et dur. Il souhaitait ajouter plusieurs champs mais entre chaque ligne de définition, il écrivait :

            parent::__construct($id_product, $full, $id_lang, $id_shop, $context);

            Quel est votre problème ?

    • admin a écrit :

      Bonjour,

      Non, aucun besoin de modifier cette classe. Si vous suivez exactement ce tutoriel, vous ne devriez rencontrer aucun problème.

    • Stéphane a écrit :

      Je suis sur Prestashop 1.5.3

      En ce qui me concerne, j’ai besoin d’ajouter un champs de texte qui reçoit une valeur numerique.

      J’ai ajouter un champs nommé ‘points_cadeau’ à la fin de la table ps_products_lang mais également à la fin de la table ps_products (type int(4))

      J’ai modifié le fichier information.tpl pour ajouter mon champs personnalisé, modifié la classe product comme vous l’indiquez, avec le nom de la variable que j’ai choisi, egalement modifié mon template pour l’affichage en front office (category.tpl et products.tpl)

      malgré tout cela, impossible d’enregistrer ni de récuperer les valeurs dans le back office.

      Pouvez-vous m’aider ? Merci

        • admin a écrit :

          Je suis en train de tester de mon côté, et j’avoue qu’effectivement ce n’est pas simple. Je vous avoue que je sèche un peu. Je vous tiens au courant si j’avance sur le problème.

        • Stéphane a écrit :

          Bonjour Pauline,

          finalement j’ai supprimé les champs ‘points_cadeau’ de mes tables ‘ps_product’ et ‘ps_product_shop’ pour ne laisser ‘points_cadeau’ que dans la table ‘ps_product_lang’

          J’arrive à récupérer les valeurs de ce champs en B.O, par contre il ne s’affichent pas dans le front alors que j’ai mis dans mon template category_list.tpl l’instruction smarty {$product->points_cadeau}

          une idée ?

          • admin a écrit :

            Bonjour,

            Oui il est tout à fait normal que vous n’ayez rien dans ce template car la requête SQL de cette page ne récupère pas tous les champs, comme c’est le cas pour celle de la page produit.

            Pour récupérer votre valeur, vous devez vous rendre dans /classes/Category.php et modifier la requête ($sql) autour de la ligne 607, en rajoutant pl.points_cadeau dans le SELECT.

            NB : Préférez l’override de cette fonction au risque de perdre vos modifications après des mises à jour.

            • BAKER a écrit :

              Bonjour à vous merci pour cette solution ça fonctionne bien chez moi.

              J’ai juste besoin une information ou qu’elle requête modifié pour que je puisse ajoute ses informations dans la partie (product-list.tpl) ??

              J’ai mis :

              {if isset($product.prixmetro)}
              {$product.prixmetro|escape:’htmlall’:’UTF-8′}
              {/if}

              mais çà me retourne :

              Notice: Undefined index: prixmetro in…

              Merci d’avance.

              • admin a écrit :

                Bonjour,

                Comme dit dans un commentaire précédent :

                Pour récupérer votre valeur, vous devez vous rendre dans /classes/Category.php et modifier la requête ($sql) autour de la ligne 607, en rajoutant pl.points_cadeau dans le SELECT.

                NB : Préférez l’override de cette fonction au risque de perdre vos modifications après des mises à jour.

              • BAKER a écrit :

                Par fait merci beaucoup, par contre je n’arrive pas à override le fichier Category.php.

                j’ai mis :

                class Category extends CategoryCore

                avec la function getProducts à l’intérieur de la classe…

                Je suis obliger de déclarer ? les variables ?

                Encore merci.

                Cordialement.

  4. dominique a écrit :

    Bonjour
    Je rencontre le même problème que Julien (je suis avec PS 1.5.4.1).
    Le champs, même saisi dans la base, n’apparaît pas ni dans le BO ni en front office. Depuis le BO, le texte saisi s’efface lors de l’enregistrement.
    Cela peut-il provenir du début du fichier Products.php ? (je l’ai recréé car le dossier override est vide) :
    <?php

    class Product extends ProductCore
    {
    VOTRE CODE
    }

    Merci beaucoup

    • admin a écrit :

      Bonjour Dominique,

      Si tout comme Julien vous cherchez à ajouter un champ textarea, vous pouvez m’envoyer vos fichiers à pauline.ghiazza@gmail.com. Je vous invite par ailleurs à bien vérifier que le champ de base de données soit identique à celui du tutoriel (type, etc.).

      • dominique a écrit :

        Bonjour Pauline,

        Tout fonctionne ce matin… La nuit porte conseil. J’ai bien vérifié les champs de la base, vider les caches également 🙂
        Merci beaucoup de votre travail, tout fonctionne à merveille !
        Cordialement

  5. Carl a écrit :

    Bonjour,

    je suis sous prestashop 1.5.4.1 et j’ai beau suivre le tuto je n’arrive pas à enregistrer les valeurs du champ.

    Pouvez vous m’aider ?

    Cordialement

    • admin a écrit :

      Je dois tester cette méthode sur la version 1.5.4.1 dans les prochains jours, car il semble y avoir de plus en plus de problèmes pour la mettre en place. Je vous tiens au courant.
      En attendant, je vous invite à revérifier scrupuleusement chaque étape du tutoriel.

  6. Yoann a écrit :

    Bonjour !

    Petite question : sur ce modèle serait-il possible d’ajouter un champ image (avec upload) ou autre, pour les pages CMS ?

    Merci en tout cas pour ce tuto qui aide bien ^^

    • admin a écrit :

      Alors là je ne sais vraiment pas, il faudrait investiguer la chose. Possible çà c’est évident. Maintenant comment…
      Vous pouvez prendre exemple sur d’autres input file du back-office en essayant de tracer le code les concernant.

    • FredH a écrit :

      Bonjour !

      Merci Pauline pour ce tuto, super bien fait et fonctionnel!

      @Yoann : as-tu réussi à ajouter un champ image pour les pages CMS ? J’ai tenté de m’y coller mais n’ai pas encore trouvé la réponse…
      Je compte suivre les conseils de Pauline en m’inspirant quelque peu d’un code existant, mais je voulais savoir s’il n’y a pas d’autres pistes que tu aurais explorées…

      Merci d’avance pour ta réponse,
      Fred

  7. olivia a écrit :

    bonjour,
    il est super le tuto mais comme la plupart des premiers post, j’ai des soucis: le champs s’affiche dans le BO mais lorsque j’écris du texte, il s’efface lors de l’enregistrement et ne s’affiche pas dans le FO.
    mon champs que j’ai créer dans phpadmin c’est « pointsforts » comme dans le tuto donc normalement je n’ai rien à modifier.
    Je ne comprends pas ou est le probleme ;/
    pouvez-vous m’éclairer?
    merci d’avance

  8. Greg a écrit :

    Bonjour,

    Merci pour ce tuto.
    Mais j’ai un soucis, je voudrais ajouter une case à cocher dans le même fonctionnement que disponible à la vente (available_for_order).
    Le problème est que le fichier « informations.tpl » n’as pas l’air d’être surchargé. et quand j’essaie de modifier le fichier original, tout plante.
    Avez vous déjà eu ce genre de problème et avez une solution ?

    Merci de votre aide.

    • admin a écrit :

      Bonjour,

      Pour ce qui est de surcharger le fichier informations.tpl, tout est expliqué dans la partie 3.
      De plus, si cela plante, c’est certainement qu’il y a une erreur dans ce fichier.
      Vérifiez bien l’ouverture ou non des tags < ?php et ?>.

    • Greg a écrit :

      Merci de votre réponse,

      Bon…Je suis un boulet !
      Erreur dans le nom du dossier qui contient informations.tpl.

      En revanche, maintenant, je me retrouve avec une erreur dans l’enregistrement du produit.
      Il me dit : « Une erreur s’est produite pendant la mise à jour de l’objet. product ()  »

      J’ai vu sur d’autre forum, qu’il fallait surcharger le fichier « AdminProductsController.php », est-ce nécessaire d’après vous? car je l’ai fait, mais cela n’a rien changé ou alors j’ai encore le mode boulet d’activé 🙂

      Merci de votre réponse.

      • admin a écrit :

        Non, nul besoin de surcharger le controller.
        Vérifiez ceci :
        – II ) Modification de la classe Product => Le nom de la variable doit être changé à deux endroits
        – III ) Modifier la vue backoffice => Idem, il y 2 occurrences du mot « pointsforts » à remplacer par votre variable

        • Greg a écrit :

          Merci,

          je viens de changer la configuration de mon nouveau champs.
          J’ai enlever la notion de langue et de multi-boutique et là ça va mieux.

          Plus d’erreur, mais l’enregistrement du changement d’état de ma case à cocher ne se fait pas.

          Et après un dernier test, il fallait surcharger le fichier AdminProductController.php et là, tout fonctionne.

          Merci à vous pour votre aide.

          • admin a écrit :

            En effet, je n’avais pas fait attention au type de champ que vous vouliez ajouter, et oui, il faut pour les booléens, modifier le controller.
            Heureuse pour vous que tout fonctionne.

  9. Cupidon a écrit :

    Bonjour,

    Un grand merci pour ce tuto, exactement ce dont j’avais besoin. Cependant, problème, j’ai un message « erreur serveur ».

    En résumé :

    – Prestashop 1.5.4.1
    – Je crée mon champ dans ma base de donnée. En TEXT (même paramétrage que pour la description).
    – Création du fichier Product.php qui est placé au bon endroit (j’ai vérifier 200 fois).
    – Modification et placement du fichier informations.tpl au bon endroit (vérifier 200 fois aussi).

    Et pouf ! quand je vais sur ma fiche produit, j’ai un gros message « Erreur serveur » avec ce message : « Le site Web a rencontré une erreur lors de l’extraction de http://???????????????index.php?controller=AdminProducts&id_product=21&updateproduct&token=84584d7ffa198f92e870518297d678f1. Cela peut être dû à une opération de maintenance ou à une configuration incorrecte.
    Code d’erreur : 500. »

    (Le « Cache des templates » et le « Cache » sont correctement paramétrés.)

    Pourriez-vous m’aider ?

  10. Sylvain a écrit :

    Bonjour Pauline, j’ai absolument besoin de créer ces fameux champs pour les fiches produit de mon site mais même après avoir tout revérifier, je n’y arrive pas.
    Je suis en 1.5.4.0 et j’ai laissé ton exemple pour être sur que ca fonctionne (pointsforts)
    Les symptômes :
    – Le champs dans le BO ne sauve pas mon texte dans la BDD
    – Si j’ajoute une valeur dans le champs « pointsforts » de la table, rien n’apparait sur la fiche produit.

    Pourrais tu m’éclairer stp?

    • admin a écrit :

      Bonjour,
      J’ai bien eu ton mail et il ne m’a pas semblé voir d’erreur. Histoire de debuger un peu le truc, je te conseille d’activer l’affichage des erreurs dand le fichier /config/config.inc.php en passant à true l’option de debugage.

  11. jerem a écrit :

    Bonjour,

    Et merci pour ce tuto !
    J’ai suivi ce tuto en changeant juste le type en isString.
    Je rencontre un problème sur la récupération de ma donnée enregistrée en base de données.
    Il me retourne un tableau sur mon nouveau champ. Avez vous une idée ?

  12. Radhia a écrit :

    Bonjour admin
    Merci pour ce tuto
    mais j’ai un problème j’ai vérifié tous les étapes mais les données ne s’affichent pas ni dans BO ni dans la base de données

  13. Kevin a écrit :

    Bonjour,

    Merci pour ce tuto très clair.
    Tout fonctionne bien sauf la modification du select ($sql) dans la fonction getProducts() de la classe Catgory.php.
    J’ai bien coller la fonction dans un nouveau fichier mais c’est comme si cela n’était pas pis en compte. Pourtant dans le fichier ‘/cache/class_index.php’ je vois bien que c’est la classe du dossier override qui est prise en compte.
    Je suis sous Prestashop 1.5.6.
    Avez-vous une idée ? Merci d’avance.

    Cordialement,
    Kevin

    Collez cette fonction dans le fichier /override/classes/Category.php (à créer s’il n’existe pas), et modifiez-y la requête ($sql) , en rajoutant pl.pointsforts dans le SELECT.

    • admin a écrit :

      Bonjour,

      Petite nouveauté de la version 1.5.6, il y a maintenant un cache de l’autoload. Il faut donc le supprimer grâce au nouveau bouton dans Préfèrences > Performances, et normalement après ça roule 😉

      • Kevin a écrit :

        Merci pour votre réponse rapide.
        J’avais bien fait cela aussi mais sans succès.
        N’y a t’il pas un layout ou un fichier .tpl a modifier aussi pour modifier la liste dans le backoffice ?
        Merci d’avance.
        Kevin

          • Kevin a écrit :

            J’ai déjà essayé ça aussi mais je ne trouve pas la page .tpl qui correspond à la liste des produits.
            J’ai regardé dans le dossier admin/themes/default/template/controllers/products/ mais aucun fichier ne me semble être la page avec le listing.
            On parle bien de la page de listing ou l’on peut voir tous les produits (via le backoffice ‘catalogue > produits’) ?
            Merci pour le temps que vous prenez à me répondre.

              • Kevin a écrit :

                Je pense que nous ne parlons pas de la même chose.
                Le fichier informations.tpl correspond au layout de l’onglet « Informations » d’une fiche produit.
                Ce que j’avais cru comprendre dans la deuxième partie du point 4 de votre tuto était qu’en ajoutant le nouveau champs dans le SELECT du fichier /override/classes/Category.php, cela permettrait de faire apparaitre le nouveau champs sur la page ‘Catalogue > Produits’ du backoffice.
                C’est-à-dire, la page ou sont listé tous les produits.
                Ai-je bien compris (car je n’arrive pas à faire fonctionner cela) ? Sinon, ou est-ce que notre nouveau champs est censé apparaitre en le rajoutant dans ce SELECT ?
                Merci.
                Ps: En continuant mes recherches, je pense que la modification que je cherche à faire (modification de la liste de tous les produits) se trouve quelque part au niveau du fichier AdminProductsController.php, savez-vous me confirmer cela ?

              • admin a écrit :

                Effectivement, nous nous sommes mal compris.
                Rajouter le nouveau champ à la requête SQL dans Category.php permet en fait de récupèrer cette variable dans le template product-list.tpl, via la ligne $product->votre_champ.

              • admin a écrit :

                Correction : Il me semble que dans le template product-list, la variable product est un tableau, donc faire $product.votre_champ au lieu de $product->votre_champ.

  14. Peixoto a écrit :

    Pour ceux chez qui ça ne fonctionnerait pas, essayez de faire ce tutoriel:
    http://nemops.com/extending-prestashop-objects/

    en modifiant la ligne:
    self::$definition[‘fields’][‘extrafield’] = array(‘type’ => self::TYPE_STRING, ‘validate’ => ‘isGenericName’, ‘size’ => 64);

    par l’équivalent donné dans le tutoriel ici présent.

    Merci pour celui-ci d’ailleurs,

  15. Florian a écrit :

    Bonjour,
    merci pour ce tuto j’ai eu aucun souci pour ajouter un champs.
    Maintenant je souhaite en rajouter un deuxiéme donc j’ai suivi les même etapes mais ca ne fonctionne pas, j’ai des pages blanches dans l’admin des produits et sur la page produit.

    Quel est la démarche à suivre svp.

    Merci,

    Florian

    • admin a écrit :

      Bonjour,

      Si vous avez une page blanche, c’est qu’il y a un problème quelque part !
      Je vous suggère de regarder si vous n’avez pas fait la même erreur que Arthur (voir dans les commentaires plus bas).

  16. Florian a écrit :

    Bonjour,
    merci pour ce tuto j’ai eu aucun souci pour ajouter un champs.
    Maintenant je souhaite en rajouter un deuxiéme donc j’ai suivi les même etapes mais ca ne fonctionne pas, j’ai des pages blanches dans l’admin des produits et sur la page produit.

    Quel est la démarche à suivre svp.

    Merci,

    Florian

  17. Arthur a écrit :

    Bonjour,

    Merci pour ce tutoriel clair et fonctionnel, j’essaie d’ajouter plus d’un champs à une fiche produit et je n’arrive pas au résultat que je souhaite. Pour l’instant, j’en suis à l’étape ou je peux modifier et écrire dans le 1er champs que j’ai mis en place, mais par contre le 2eme champs même s’il apparait dans l’admin, ne me permet pas d’enregistrer le contenu saisi dedans.
    Je pense que le problème vient de mon fichier product.php

    class Product extends ProductCore
    {
    public $millesime;
    public $infosvin;

    public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null)
    {
    Product::$definition[‘fields’][‘millesime’] = array(‘type’ => self::TYPE_HTML, ‘lang’ => true, ‘validate’ => ‘isString’);
    parent::__construct($id_product, $full, $id_lang, $id_shop, $context);

    Product::$definition[‘fields’][‘infosvin’] = array(‘type’ => self::TYPE_HTML, ‘lang’ => true, ‘validate’ => ‘isString’);
    parent::__construct($id_product, $full, $id_lang, $id_shop, $context);

    }
    }

    Des idées ou une solutions à mon problème ?

    D’avance merci 🙂

    • admin a écrit :

      Bonjour,

      Il y a en effet une ligne de trop dans votre fichier.
      Voici le contenu corrigé de la fonction :

      Product::$definition[‘fields’][‘millesime’] = array(‘type’ => self::TYPE_HTML, ‘lang’ => true, ‘validate’ => ‘isString’);
      Product::$definition[‘fields’][‘infosvin’] = array(‘type’ => self::TYPE_HTML, ‘lang’ => true, ‘validate’ => ‘isString’);

      parent::__construct($id_product, $full, $id_lang, $id_shop, $context);

    • Arthur a écrit :

      Je me répond à moi même, vu que j’ai trouvé la solution !

      Le problème venait bien de mon fichier product.php

      class Product extends ProductCore
      {
      public $millesime;
      public $infosvin;

      public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null)
      {
      self::$definition[‘fields’][‘infosvin’] = array(‘type’ => self::TYPE_HTML, ‘lang’ => true, ‘validate’ => ‘isString’);
      self::$definition[‘fields’][‘millesime’] = array(‘type’ => self::TYPE_HTML, ‘lang’ => true, ‘validate’ => ‘isString’);
      parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
      }
      }

      Pour rajouter plusieurs champs, il faut les déclarer une fois avec la ligne self:: ajouter à la suite, tous les champs voulus, puis ensuite valider l’insertion des champs avec la ligne parent::

      Et hop !

  18. REMI a écrit :

    Impeccable ce petit tuto reussi du premier coup sans bug 😉

    Il en faudrait un peu plus comme ca des tuto, il y a trop peu d’aide claire dans la communauté prestashop.

    Bonne continuation

  19. Xav a écrit :

    Super tuto ! Un grand merci, ça fonctionne à merveille !

    J’aimerai rajouter un champ texte sur les déclinaisons de mes produits qui va venir remplacer la description du produit ou s’ajouter en plus de celle-ci (même principe que la référence, qui quand elle est inscrite, remplace la référence du produit)

    Le but étant par exemple, sur un produit avec déclinaisons, d’avoir une description « générique » pour ce produit et une description « détaillée » de cette déclinaison, ou de remplacer directement la description du produit par la description de la déclinaison…

    J’ai tenté un override sur la classe Combination.php en ayant rajouter un champ dans la table product_attribute mais rien à faire, je n’arrive même pas à récupérer les valeurs dans ma base.

    PS 1.5.6.1

    • Thomas a écrit :

      Salut !
      je voulais savoir si tu avait réussi à faire ce que tu voulais ?
      Je cherche également un moyen d’ajouter un champ description par déclinaison.

      Merci d’avance pour ta réponse.

      Thomas

  20. Jo a écrit :

    Bonjour,

    Merci pour le tuto qui marche très bien. J’essaye de mon coté de faire pareil pour un champ de la table product : secteur_id. Ce champ est relié à une table secteur. J’ai fais exactement la même chose que pointsforts mais avec secteur_id et lors d’un ajout ou d’une modif j’ai ces erreurs :

    Unknown column ‘secteur_id’ in ‘field list’

    INSERT INTO `ps_product_lang` …

    ET

    Unknown column ‘secteur_id’ in ‘field list’

    UPDATE `ps_product_lang` SET `id_product` = …

    Je dois louper qqchose avec product_lang …

    Merci d’avance.

  21. Jo a écrit :

    Hello,

    Merci pour ce tuto qui me permet d’avancer. Dans un 1er temps j’ai suivi le tuto et nickel tout fonctionne. Ensuite, j’ai voulu faire de même mais pour un champ dans la table ps_product, le champ secteur_id que j’ai rajouté moi même et qui est en relation avec la table ps_secteur que j’ai créé. A l’affichage tout va bien mais lors d’un insert j’ai une erreur : unknown field secteur_id dans insert into ps_product_lang en gros et pareil pour update.

    Détail de l’erreur :

    /* Unknown column ‘secteur_id’ in ‘field list’

    UPDATE `ps_product_lang */

    Comment faire en sorte que ça fonctionne pour un champ d’une autre table que celle de ton exemple ?
    Spécifier que c’est dans la table ps_product plutôt que ps_product_lang.

    Merci.

  22. Mathieu a écrit :

    Bonjour,

    Est-il possible de surcharger la définition d’un champ existant ?

    Par exemple augmenter la limite de taille du champ « name » limité à 128 pour le passer à 255 ?

    Bien qu’ayant modifier la valeur de taille du champ dans la base de donnée, je n’arrive pas à réaliser cette modification par override, ça ne fonctionne qu’en la réalisant dans le fichier Product du coeur de Prestashop.

    ce qui ne me satisfait pas pour les futurs mises à jour de la boutique.

    Cdt,
    Mathieu

    • admin a écrit :

      Bonjour Mathieu,

      Quelque chose comme çà devrait fonctionner (à coller dans l’override de la classe Product.php) :

      class Product extends ProductCore {

      Product::$definition[‘fields’][‘name’] = array(‘type’ => self::TYPE_STRING, ‘lang’ => true, ‘validate’ => ‘isCatalogName’, ‘required’ => true, ‘size’ => 255);

      }

  23. Max a écrit :

    Bonjour,

    j’ai une simple question :
    puis-je ajouter des champs dans ma table ps_product sans craindre les futures mises à jour de prestashop qui pourraient modifier la base de données et ainsi détruire ce que j’ai mis en place ?

    Max

    • admin a écrit :

      Bonjour Max,

      Normalement il n’y a aucun problème.
      Lors de la mise à jour, Prestashop écrase les fichiers (d’où l’override) mais pas la base de données. Les nouveaux champs sont simplement rajoutés et même les champs qui changent de nom sont dupliqués.
      Vous n’avez donc pas à être inquiet à ce sujet.

  24. Sam a écrit :

    Merci pour se super tuto.
    Je l’est utilisé pour rajouter un texte au niveau du tarif (une mention « à partir de »).

    Je suis tombé sur une erreur pour l affichage dans la page product-list, {$product->pointsforts} renvoie une erreur « Trying to get property of non-object  » ???? oO

    J’ai donc mis dans le tpl:
    {if !empty($product.pointsforts)}{$product.pointsforts}{/if}

    Et ca marche…
    Si vous avez un tuto aussi clair pour rajouter une case à cocher dans la partie tarif de l’admin, je suis preneur…

  25. Vincent a écrit :

    Bonjour j’ai suivi vos instructions et tout fonctionne pour la partie « information » en revanche, dès que je modifie le fichier prices.tpl, le résultat ne s’affiche pas… Il est bien pris en compte dans le formulaire et donc la base de données à l’enregistrement mais je ne peux pas l’afficher dans un Value= » » ???!!! Il s’affiche sur information.tpl si je fais le test mais pas dans Prices.tpl….

    Je ne comprends plus rien… Pouvez vous m’aider ?

    Merci beaucoup et merci pour le tuto 🙂

  26. Nicolas a écrit :

    Bonjour.

    Merci beaucoup pour ce tuto. Malheureusement je n’arrive pas à le faire fonctionner sur un presta 1.5.5.0.

    Je n’ai rien changé, j’ai juste fais coller toutes vos infos avec pointfort mais j’ai ceci dans au dessus du formulaire lorsque je lance le debug:
    Notice: Undefined property: Product::$pointsforts in /*****.file.informations.tpl.php on line 415

    Y a-t-il quelque chose de spécial à faire?

    Merci par avance.

    • admin a écrit :

      Bonjour,

      Il y a peut être un problème avec la classe, puisque cette erreur signifie que $pointsforts n’est pas déclaré. Il faut donc vérifier votre classe Product.

      Si vous ne voyez rien, il peut également s’agir d’un problème d’autoload. Je ne sais plus si le bouton « Effacer le cache de l’autoload » était déjà présent dans la version 1.5.5 (Paramètres avancés > Performances). Si c’est le cas, cliquez dessus.

      Sinon, allez supprimer manuellement le fichier /cache/class_index.php qui aura le même effet.

  27. Durieux a écrit :

    Bonjour

    Merci de ce tutoriel, fonctionne bien pour moi en front & back office, sauf que le champ ajoute n’est pas disponible quand on fait un ‘import’ csv de donnees…
    Y at-il une autre modif a faire pour cela?

  28. baptiste a écrit :

    Bonjour déjà merci pour ce tuto!=)
    ensuite j’ai modifier l’apparence de la case en une petite zone à l’exemple du nom ou de la référence, le seul problème c’est que les informations s’enregistrent dans la BDD dans le front mais pas dans le BO.
    j’ai gardé le nom, points forts.
    Donc voila mon code dans informations.tpl

    {$bullet_common_field} {l s=’Points forts :’}
    ({l s=’Les points forts du produit’})

    pointsforts|escape:html:’UTF-8′} » style= »width: 130px; margin-right: 5px; » />

    Quelqu’un aurait-il une solution?

    Merci!=)

  29. Laurent a écrit :

    Merci Pauline pour ce tuto très clair !
    Tout a fonctionné du premier coup (enfin, après avoir vider le cache…)
    Et bravo aussi pour votre réactivité dans les réponses aux commentaires 😉

  30. Pierre a écrit :

    Merci, pour le tuto, cela m’as fortement aidé même si j’ai galérer à voir où on fait la modification pour que le nouveau champs sois mis à jour au niveau de la base de donnée. Après avoir, perdu une petite heure. J’ai finalement remarqué, qu’il fallait simplement surchargé dans l’overide le tableau de définition (public static $definition = array()). Copier le tableau et ajouter le champs, moi qui cherchais une fonction update ou insert. J’aurai dut cherché la simplicité dès le début.

  31. Julien a écrit :

    Hello Pauline,

    J’ai suivi à la lettre ce tuto et aucun champs texte n’apparait dans mon admin. 🙁
    Serait il possible d’avoir un petit coup de pouce ?

    Pour info je suis sur la version 1.5.6.1

    Merci.

    J.

    • admin a écrit :

      Bonjour,

      Si cela ne fonctionne pas, tu n’as pas du le suivre à la lettre ;).
      Je vois 2 causes possibles du coup :
      – Le fichier informations.tpl overridé n’est pas au bon endroit
      – Le cache de l’autoload n’a pas été effacé (partie « Çà ne fonctionne pas ? » du tuto).

      • Julien a écrit :

        Et si je souhaite rajouter une 3, 4… zone de texte sur ma page produit, je dois :

        > Dois je écrire dans le fichier product.php comme ceci ? :

        self::TYPE_HTML, ‘lang’ => true, ‘validate’ => ‘isString’);
        parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
        }

        }

        {
        public $pointsforts02;

        public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null)
        {
        Product::$definition[‘fields’][‘pointsforts02’] = array(‘type’ => self::TYPE_HTML, ‘lang’ => true, ‘validate’ => ‘isString’);
        parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
        }

        }

        Merci !

        • admin a écrit :

          Le fichier devrait ressembler à ça :

          < ?php class Product extends ProductCore { public $champ1; public $champ2; public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null) { Product::$definition['fields']['champ1'] = array('type' => self::TYPE_HTML, ‘lang’ => true, ‘validate’ => ‘isString’);
          Product::$definition[‘fields’][‘champ2’] = array(‘type’ => self::TYPE_HTML, ‘lang’ => true, ‘validate’ => ‘isString’);

          parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
          }

          }

  32. RéMi a écrit :

    Bonjour et merci pour vos astuces bien pratique

    J’ai adapté votre solution pour créer deux nouveaux champs.

    Cependant gros soucis pour moi, impossible d’afficher le contenu dans la zone créé côté Back Office.
    J’ai vérifié dans la Base et pareil, rien ne s’enregistre dans ce nouveau champ.
    J’ai pourtant suivi et vérifié chaque étape. J’ai même adapté une solution indiqué dans les commentaires.

    Je suis sous presta 1.5.4.1.
    Merci.

  33. Scal a écrit :

    Bonjour,

    Je voudrais savoir si votre solution s’adapte à des champs
    de saisie vide côté Front Office, à remplir par le client .

    Je clarifie : je voudrais ajouter à la fiche produit des champs Taille, Poids et Pointure,
    qui soient ensuite « passés » au panier et dans les commandes comme des déclinaisons.

    L’utilisation de Personnalisation semble un peu trop fastidieux du fait de leur décalage et que le client doivent les enregistrer avant de choisir ces déclinaisons.

    Merci bien.

  34. jma a écrit :

    Bonjour,

    J’essaie depuis déjà bien longtemps de récupérer une variable dans le fichier product_list.tpl
    mais je n’y arrive pas.
    J’ai créé un nouveau champ dans le premier onglet de l’admin des produits appelé « textelibre »
    Ce champ peut être rempli par l’utilisateur depuis une fiche produit de l’admin de son site juste avant la description du produit.
    Je récupère sans problème le contenu de ce champ dans la fiche produit : fichier product.tpl du thème.
    Mais impossbile depuis la liste des produits : fichier product_list.tpl

    Pourriez vous m’aider pour cela. Quel est la méthode
    Je suis sur Prestashop 1.5.3.1

    Merci bien

    JMA

    • P.Ghiazza a écrit :

      Bonjour,

      Il vous suffit de jeter un oeil à la partie IV ) Affichage en front-office.
      La manipulation est expliquée après la zone de code.

  35. Claudie a écrit :

    Bonjour,

    Je souhaite ajouter dans la nouvelle version de Presta 1.6.0.6 et dans la rubrique prix un champ nombre (Les 6, Les 12 etc).

    Pensez-vous que ce soit possible avec votre tuto,

    D’avance merci pour votre réponse.

    • P.Ghiazza a écrit :

      Bonjour,

      Je n’ai pas encore pris le temps de tester sur les versions 1.6.
      Cependant, cela devrait fonctionner. Prestashop à déclaré ne pas avoir touché au coeur de l’application.

      • Claudie a écrit :

        Merci pour la réponse rapide. Je vais donc vérifier car effectivement ce sont bien les déclarations de Prestashop.

        Je vous informe dès que la manipulation sera faite.

  36. Nicolas a écrit :

    — AJOUT DE 3 zones ou plus.. —

    Bonjour,

    J’ai un petit souci. Pouvez-vous tester de mettre >3 champs? Moi dès que je rajoute le 3ème il va me dire ensuite:
    Unknown column ‘3emechamp’ in ‘field list’

    Est-ce qu’il existe une solution?
    Merci par avance.

  37. GAYLORD a écrit :

    Bonjour,

    je souhaites faire cette manipulation mais pour les attributs, j’ai rajouter un champ dans la table ‘attribute_lang’.

    J’ai fais les mêmes manipulations avec la classe Attribute cependant pour le BO, je ne sais pas lequel correspond à la page Attributs et Valeur.

    J’ai essayé avec votre exemple je n’ai pas eu de soucis.

  38. akinom a écrit :

    Bonjour,
    j’ai mis en place votre tuto. ça fonctionne parfaitement. Un grand merci!!! En revanche, j’ai une question quant à la partie:

    « Si vous souhaitez afficher la valeur de votre nouveau champ sur la page des catégories, rendez-vous dans /classes/Category.php et copiez la fonction getProducts() (ligne 555 approximativement).

    Collez cette fonction dans le fichier /override/classes/Category.php (à créer s’il n’existe pas), et modifiez-y la requête ($sql) , en rajoutant pl.pointsforts dans le SELECT. »

    ça veut dire que le nouveau champ devrait s’afficher dans la liste de produits dans une catégorie donnée? (à côté d’un produit qui possède ce champ pointsforts rempli).

  39. Guillaume a écrit :

    Bonjour,
    J’ai suivi votre tuto et ça marche qu’a moitié de mon côté:
    je souhaite ajouter un champs « checkbox » dans la fiche produit alors j’ai copié les même caractéristiques que le champs « available for order » et lorsque que mon champ est a zéro il n’est pas coché (jusqu’ici OK) je le coche je met à jour le produits, le champ devient coché (dans la base de donnée l’UPDATE fonctionne) mais lorsque je le décoche, je met à jour, l’UPDATE ne marche pas, il est toujours à 1 et la je bloque…
    Une idée ?

    Merci d’avance

      • Frederik a écrit :

        Bonjour, je suis très intéressé par le fonctionnement avec une checkbox mais je n’arrive pas à faire fonctionner. En textearea niquel tout fonctionne, un petit supplément d’information pour m’aider à avancer ?

  40. Fabien a écrit :

    Bonjour,
    j’ai déjà utilisé ce tuto pour mes fiche produit, il a très bien fonctionné merci.
    Mais peut-on faire la même chose pour les commandes ?
    ajouter un champs texte pour se laisser une note a propos de la commande.

  41. Francois a écrit :

    Excellent ce tutoriel !!
    Ca marche très bien. Merci à l’auteur !

    J’ai 2 petites questions qui pourront servir à tous le monde je pense :

    1) Comment faire pour mettre un type Float à la place ?
    (J’ai changé mon type dans la BDD, mais ca ne marche pas. Il faut changer cette ligne j’imagine ?
    Product::$definition[‘fields’][‘degressionachat’] = array(‘type’ => self::TYPE_HTML, ‘lang’ => true, ‘validate’ => ‘isString’);

    2) Est-il possible de creer un module qui quand on l’active ajoute un champ texte (fasse exactement ce que le tuto fait)
    Ce serait assez fou 🙂

    Un grand merci d’avance pour vos réponses à mes 2 questions 🙂

  42. Julien a écrit :

    Bonjour,

    J’ai utilisé ce tuto en local sous prestashop 1.5.6.1 et cela fonctionnait parfaitement.
    Mais en passant prestashop en ligne, j’ai le message d’erreur : Une erreur s’est produite pendant la mise à jour de l’objet. product ()

    Impossible de résoudre le problème…

    J’ai essayé d’écraser le ficher override avec un ancien qui n’a pas les ajouts de champs produit, mais les champs restent sous presta…

    Si quelqu’un à une idée, ça serait super.

    Merci !

    J.

    • P.Ghiazza a écrit :

      Bonjour,

      Je vais dire quelque chose de bête mais, le champ est-il bien présent dans votre base de données sur la version en ligne ?

      Pensez également à vider le cache de l’autoload dans la toolbar de Préférences > Performances ou en supprimant directement le fichier class_index.php dans le dossier /cache.
      J’utilise cette astuce sur quasi tous les projets auxquels je contribue, et je peux donc affirmer qu’il n’y a aucun problème avec cette solution.

      • Julien a écrit :

        Merci Pauline, oui j’ai bien pensé à tous ça 🙂

        Tout fonctionnait bien en local, j’avais 5 champs supplémentaires sur ma page produit.
        J’ai tout basculé sur mon serveur, et là : En serveur et en local j’obtient cette erreur.

        Après 2 jours sur le sujet, je deviens totalement fou.

        • P.Ghiazza a écrit :

          Le reste de votre boutique fonctionne t-il bien ?
          Avez-vous essayé d’afficher les erreurs ?
          Pouvez-vous revérifier que les champs soient crées dans la bonne table (ps_product_lang pour les champs multilingues, ps_product pour les autres) ?

  43. Julien a écrit :

    De plus, J’ai remis des sauvegardes du dossier complet prestashop + backup SQL des dernières semaines, rien de change…
    Je vois pas ce que ça peut être hormis une malédiction !

    Auriez-vous une piste ?

    J.

    • P.Ghiazza a écrit :

      Merci de répondre au commentaire ci-dessus pour que je puisse vous aider.
      Au passage, vérifiez l’absence de cache, la recompilation des templates, etc.

      • Julien a écrit :

        Voici mes messages d’erreur :

        Applications/MAMP/htdocs/prestashop/modules/favoriteproducts/views/templates/hook/favoriteproducts-header.tpl (compile 0.00000) (render 0.00041) (cache 0.00000)
        /Applications/MAMP/htdocs/prestashop/modules/feeder/feederHeader.tpl (compile 0.00000) (render 0.00010) (cache 0.00000)
        /Applications/MAMP/htdocs/prestashop/themes/simpleresponsivetheme/modules/retinaimages/views/templates/hook/retinaimages.tpl (compile 0.00000) (render 0.00007) (cache 0.00000)
        /Applications/MAMP/htdocs/prestashop/modules/responsivetopbar/views/templates/hook/responsivetopbar.tpl (compile 0.00000) (render 0.00314) (cache 0.00000)
        /Applications/MAMP/htdocs/prestashop/themes/simpleresponsivetheme/modules/blocknewsletter/blocknewsletter.tpl (compile 0.00000) (render 0.00038) (cache 0.00000)
        /Applications/MAMP/htdocs/prestashop/modules/responsiveslider/views/templates/hook/responsiveslider.tpl (compile 0.00000) (render 0.00016) (cache 0.00000)
        /Applications/MAMP/htdocs/prestashop/modules/editorial/editorial.tpl (compile 0.00000) (render 0.00011) (cache 0.00000)
        /Applications/MAMP/htdocs/prestashop/modules/responsivehomefeatured/views/templates/hook/responsivehomefeatured.tpl (compile 0.00000) (render 0.00278) (cache 0.00000)
        /Applications/MAMP/htdocs/prestashop/modules/blockreinsurance/blockreinsurance.tpl (compile 0.00000) (render 0.00013) (cache 0.00000)
        /Applications/MAMP/htdocs/prestashop/modules/blockrss/blockrss.tpl (compile 0.00000) (render 0.00030) (cache 0.00000)
        /Applications/MAMP/htdocs/prestashop/themes/simpleresponsivetheme/modules/blocksocial/blocksocial.tpl (compile 0.00000) (render 0.00014) (cache 0.00000)
        /Applications/MAMP/htdocs/prestashop/themes/simpleresponsivetheme/index.tpl (compile 0.00000) (render 0.00008) (cache 0.00000)
        /Applications/MAMP/htdocs/prestashop/themes/simpleresponsivetheme/layout.tpl (compile 0.00000) (render 0.00094) (cache 0.00000)
        /Applications/MAMP/htdocs/prestashop/themes/simpleresponsivetheme/header.tpl (compile 0.00000) (render 0.00031) (cache 0.00000)
        /Applications/MAMP/htdocs/prestashop/themes/simpleresponsivetheme/footer.tpl (compile 0.00000) (render 0.00015) (cache 0.00000)

        • P.Ghiazza a écrit :

          Il s’agit d’erreur en local non ? Je trouve bizarre que votre version en ligne soit sous un serveur Mac avec Mamp… Ensuite, ces erreurs ne sont aucunement liées au tuto, il semblerait que peut être des fichiers soient manquants. Beaucoup de modules ne fonctionnent pas si l’on suit ces erreurs : editorial, blockreinsurance, reponsiveslider, etc. ainsi que des fichiers dans le thème. Essayez de ré-uploader l’intégralité du site.

  44. Julien a écrit :

    Après avoir trouvé ce bug en ligne, je suis revenu en local puis même erreur…
    J’ai relancer des sauvegardes, même erreur.

    Si je supprime les lignes de code du Product.php, tout marche nickel :

    self::TYPE_HTML, ‘lang’ => true, ‘validate’ => ‘isString’);
    Product::$definition[‘fields’][‘ingredients’] = array(‘type’ => self::TYPE_HTML, ‘lang’ => true, ‘validate’ => ‘isString’);
    Product::$definition[‘fields’][‘fabrication’] = array(‘type’ => self::TYPE_HTML, ‘lang’ => true, ‘validate’ => ‘isString’);
    Product::$definition[‘fields’][‘garantit’] = array(‘type’ => self::TYPE_HTML, ‘lang’ => true, ‘validate’ => ‘isString’);
    Product::$definition[‘fields’][‘utilisation’] = array(‘type’ => self::TYPE_HTML, ‘lang’ => true, ‘validate’ => ‘isString’);

    parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
    }

    }

    C’est vraiment très bizarre.
    Je vous contact en MP.

    Merci.

    J

  45. Julien a écrit :

    Hello,

    Je viens de réinstaller tout mon prestashop, step by step, avec mon thème.
    Puis écraser les fichiers de l’override : Tout marche cette fois ci !

    J’espère quand prod, il n’y aura pas de mauvais tour comme ça !!

    Merci beaucoup pour ton aide Pauline.

    A+ Julien

  46. Fred a écrit :

    Bonjour, j’ai une demande particulière.
    J’utilise la version 1.6.0.8 (la dernière à ce jour).
    Votre méthode fonctionne parfaitement, j’ai ajouté une une image d’icônes de caractéristiques sur les fiche produit et sur les blocs produits en home de catégorie… Tout fonctionne parfaitement, mais (il y a toujours un « mais » sinon ça serait trop facile) je souhaite aussi que cette image apparaisse dans les blocs produits de la page « nouveautés ». l’image en question apparait bien dans les « populaires » sur la homepage du site.

    J’ai bien vus que le template blocknewproducts_home.tpl du module « blocknewproducts » va chercher le template product-list.tpl comme les categories, j’ai donc un div vider à l’emplacement ou j’ai mis : {$product.pointsforts}.

    Merci d’avance pour votre aide.

    • P.Ghiazza a écrit :

      Bonjour,

      Je vous invite à consulter la partie IV de ce tuto pour répondre à votre problème :
      « Si vous souhaitez afficher la valeur de votre nouveau champ sur la page des catégories, rendez-vous dans /classes/Category.php et copiez la fonction getProducts() (ligne 555 approximativement). »

  47. Thibaud a écrit :

    Bonjour,

    Je n’arrive pas à trouver l’équivalent de

    admin/themes/default/template/controllers/products/informations.tpl

    pour la catégorie. En effet, je souhaiterais rajouter un champ administrable en BO mais pour ma catégorie et non mon produit

    Merci d’avance !

  48. Nullos a écrit :

    Bonjour, je voudrais ajouter un champs dans le même style mais sur la fiche de création client.

    Mon problème est que je ne trouve pas le bon tpl …

    Pouvez vous m’aider ?

  49. Huon a écrit :

    Bonjour,
    tout d’abord merci pour votre tuto.
    Je rencontre certaines difficultés, peut être pourrez-vous m’aider…
    – comment ajouter ce nouveau champs dans la page product-list.tpl?
    – comment faire pour que le moteur de recherche de prestashop index le contenu de ce noveau champs?
    – pourriez vous expliciter un peu le passage « Si vous souhaitez afficher la valeur de votre nouveau champ sur la page des catégories… » ?
    En vous remerciant,
    Thierry

    • Med a écrit :

      Bonjour est-ce que vous avez pu trouver comment ajouter ce nouveau champ sur la page product-list.tpl ? Si oui pourrais-je savoir comment vous avez procéder SVP ? Merci.

  50. jean-paul a écrit :

    Bonjour,

    J’aimerais utiliser votre tuto afin de rajouter une deuxième ligne de saisie de numéro de fax dans le bloc d’information du footer.
    Je pense qu’il faudrait, comme dans votre explication, ajouter un champ dans la table qui gère les entrées de ce module mais je sèche. (ma version est la dernière 1.6)
    Je cherche la requête d’insertion dans la base de données pour connaitre le nom de la table.
    J’avoue que je n’ai aucun mal avec php mais alors là..

    merci d’avance.

    • P.Ghiazza a écrit :

      Bonjour,

      La méthode est ici très différente car il s’agit d’un module et non du cœur de Prestashop.
      Puisque dans votre cas il s’agit du module « blockcontactinfos », je vais vous présenter la marche à suivre pour celui-ci.
      Dans le fichier php :
      1 ) Rajoutez votre nouvelle variable à protected static $contact_fields (ligne 33), nous l’appellerons ici BLOCKCONTACTINFOS_FAX
      2 ) Dans la table ps_configuration, créer une nouvelle entrée avec comme nom BLOCKCONTACTINFOS_FAX et une valeur vide.
      3 ) Dans la fonction renderForm(), modifiez $fields_form pour rajouter :
      array(
      ‘type’ => ‘text’,
      ‘label’ => $this->l(‘Fax’),
      ‘name’ => ‘BLOCKCONTACTINFOS_FAX’,
      ),
      4 ) Il ne vous reste plus qu’à ajouter la variable {$blockcontactinfos_fax} dans le template du module.

      Attention cependant à 2 points :
      a ) Avec le thème par défaut, le tpl de ce module est overridé, modifiez donc directement cet override.
      b ) Il est préférable d’overrider le fichier du module (en vue des mises à jour, cela vous évitera de devoir faire une sauvegarde des modules natifs -bien que recommandé-). Vous trouverez la méthode ici : https://gist.github.com/JulienBreux/2287709

      Bon courage !

  51. xavier a écrit :

    bonjour,

    dans un premier temps merci pour ce tuto, cela fonctione parfaitement dans product.tpl mais je ne parvient pas a l’ajouter dans product-list.tpl.

    j’essaye d’ajouter le champ dans product-list.tpl et j’ai cette erreur :

    unité de vente :
    Notice: Trying to get property of non-object in

    /beta/cache/smarty/compile/ee/f5/9b/eef59b66746d7a8c31cd70db93200a9f6683eaac.file.product-list.tpl.php on line 201

    je cherche depuis des jours mais je ne parviens pas a trouver la solution

    merci d’avance

  52. Bornet a écrit :

    Bonjour, tuto très bien réalisé et clair.
    Je souhaiterai savoir si vous avez sous le coude un petit tuto qui expliquerai comment intégrer ce nouveau champ dans la partie Import CSV de prestashop?

    Merci

    • P.Ghiazza a écrit :

      Bonjour,

      Je n’ai pas de tuto, en revanche, je viens de jeter un œil et cela me semble plutôt simple.
      Je vous invite à overrider le fichier controllers/admin/AdminImportController.php.
      Dans la fonction __construct(), il vous faut ensuite aller jusqu’à la ligne « case $this->entities[$this->l(‘Products’)]: » qui concerne l’import des produits.
      Il ne vous reste qu’à rajouter ‘mon_champ’ => array(‘label’ => $this->l(‘Label de mon champ’)), dans le tableau $this->available_fields.
      Modifiez enfin la dernière ligne de la fonction (parent::__construct();) par AdminController::__construct();

      Je n’ai pas testé cette méthode mais elle devrait fonctionner.
      Bon courage

  53. Kevin a écrit :

    Bonjour !

    Alors je tiens vraiment à te remercier pour ce tuto, non seulement ca a marché du premier coup pour ma part mais en plus j’en ai appris un paquet sur le fonctionnement des templates/override etc… Cependant je pense qu’une fois la variable crée je pouvais la placé dans n’importe quel template afin de la voir affiché.

    Par exemple dans mon cas, je me suis servis de ce tuto pour crée un champ « date » coté admin de ma fiche produit, afin de voir affiché la date de mon cours au dessus du titre du produit par exemple, idem dans les catégories, tout ca fonctionne parfaitement. Mais une fois le produit dans le panier ma variable de date n’existe plus, dans la shopping list et sur la facture. Je me suis dit facile je vais ajouté ma variable dans shopping-cart-product-line.tpl et dans invoice.tpl mais rien ne s’affiche… Je dois effectué un override particulier pour ca ?

    Merci d’avance

    • P.Ghiazza a écrit :

      Bonjour,

      Le problème est que de nombreuses fonctions sont appelées pour récupérer les produits.
      Si vous souhaitez rajouter le champ dans le bloc panier par exemple, il va vous falloir modifier la requête SQL correspondante (Prestashop fait très peu de SELECT * par défaut). Il s’agit de la fonction getProducts() de la classe Cart.
      En override, vous pouvez donc la dupliquer et rajouter pl.`votre_champ` après pl.`name` dans la ligne $sql->select().
      Pour la shopping-list, je pense (je n’ai pas vérifié), que c’est la même fonction qui est appelée donc cela devrait fonctionner.
      Enfin pour la facture, il faut modifier la requête appellée ainsi que le template du pdf.

  54. Fred a écrit :

    Salut, merci pour ce super article !!!

    Je souhaites ajouter mon nouveau champs dans le preview de mes articles (dans la page d’accueil) mais je n’arrive pas à adapter le code afin de l’afficher.
    Apparemment il faut que je l’intègre au product-item.tpl

    Avez-vous une piste ?

  55. Mafiou a écrit :

    Bonjour,

    Merci pour ce tuto !
    J’ai réussi la manipulation pour l’ajout d’un nouveau champs.
    En revanche lorsque j’essaie d’en ajouter d’autres cela ne marche plus.
    Les champs s’affichent bien dans le back-office mais il est impossible d’enregistrer du texte.
    L’erreur suivante se produit :
     » une erreur s’est produite pendant la mise à jour de l’objet. product ()  »

    Quelqu’un aurait-il une idée du problème?
    Merci d’avance.

  56. Med a écrit :

    Bonjour est-il possible d’avoir ce résultat mais dans mes listes de produits sur les pages catégorie et pas dans les pages individuelles des produits SVP ? Merci

  57. Fabrice MAUPIN a écrit :

    Bonjour,

    je travaille sur Prestashop 1.6.

    je souhaite ajouter un champ dans la table customer.

    ok pour l’ajout d’un nouveau champ dans la table customer
    ok pour /override/classes/Customer.php (extends CustomerCore)

    par contre, pour modifier la vue back_office, il y a un problème !

    La structure est la suivante : admin/themes/default/template/controllers/customers
    avec required_fields.tpl
    helpers/list/list_header.tpl
    helpers/view/view.tpl

    qu’est ce qui doit être modifié ???

    merci par avance

    Fabrice

  58. rené a écrit :

    Hello Pauline et merci beaucoup pour ton tuto,
    Tout fonctionne nickel!

    J’ai juste un soucis , ce message apparaît « Certain onglets n’ont pas été chargés correctement, voulez-vous les recharger ? » à chaque ajout de produits.

    Avant de l’intégrer sur mon site en ligne, j’ai testé en local.

    Peux-tu m’aidé svp ?
    merci d’avance 😉

    J’utilise Prestashop 1.6.0.11

  59. nadège a écrit :

    bonjour
    je suis en train de créer un site.
    Votre tuto est très interessant mais je ne sais pas si je peux m’en servir pour ce que je souhaite faire.
    Pourriez-vous m’éclairer.
    je souhaite modifier ma fiche produit
    je suis sur prestashop 1.6
    A côté de la fiche description, j’aimerai mettre à côté un champ texte toujours visible où il y aurait du texte et une image.
    Avec votre procédé, pensez-vous que cela soit possible ?.
    il y a aurai donc deux blocs côte à côte
    la fiche description et l’encart ou je détaille avec une image
    merci pour votre réponse

  60. whiterabbit a écrit :

    Bonjour, merci pour l’article et le tuto, que nous sommes tous content de découvrir et d’utiliser.

    Je suis sur une version 1.6 j’ai suivi le tuto, nickel cela fonctionne sur ma page produit et ma page catégorie mais pas en accueil dans le module homefeatured qui fait pourtant appel au même template product-list.tpl dans l’include.
    Avez-vous une piste ?
    Merci

    • P.Ghiazza a écrit :

      Bonjour,

      Pour Homefeatured effectivement, la vue est la même. En revanche, la requête elle ne l’est pas.
      Homefeatured fait appel à la fonction getProducts() de la classe Category (homefeatured.php ligne 128).
      C’est donc cette fonction qu’il vous faut overrider pour ajouter votre champ à la requête.

  61. faby a écrit :

    bonjour,

    j’ai essayé de suivre votre tuto qui doit donc fonctionner parfaitement mais je ne dois vraiment pas être douée
    sur la bdd, le champs apparait mais rien dans le back-office
    j’ai tout suivi à la lettre, il me semble ( mais j’ai du evidemment faire une erreur quelque part)
    je n’ai rien qui apparait dans la fiche produit au niveau du back-office
    je suis sur prestashop 1.6
    j’ai une multiboutique

    merci si vous avez le temps de me répondre

    • faby a écrit :

      j’ai vu mon erreur, je n’avais pas mis informations.tpl dans un dossier products
      donc là bingo le champ apparait dans le back-office
      par contre j’ai voulu modifier ce fichier, j’aurai aimé qu’il y ait un éditeur comme pour la description
      pour pouvoir ajouter une image mais donc là je ne sais pas si c’est possible et je
      m’aperçois que mes modifications ne sont pas prises en compte
      j’ai supprimer class_index.php mis le cache sur non dans le BO, vider le cahe navigateur etc…
      mais rien y fait aucune de mes modifications ne sont prises en compte
      auriez-vous une idée?

  62. Thimy a écrit :

    Bonjour,

    Ce tuto m’a été très utile, pour ajouter des champs en BO et faire des imports csv, puis pour faire apparaître ces champs en FO dans le product.tpl et product-list.tpl et je tenais à vous en remercier.

    Néanmoins, sauriez-vous me dire pour quelle raison (après avoir ajouté le champ en question dans le get pour affichage dans product-list) la liste des produits apparaît correctement avec le champ voulu si l’on passe par la recherche rapide et n’apparaît pas en passant par la navigation à facette du bandeau gauche ?

    Je sèche !
    Merci pour votre retour.

    Cdt

  63. nullos a écrit :

    Tuto genial !!!!!
    Pourriez vous peut etre m’aider ?
    Non content d’en avoir ajouté un je voudrais en ajouter un second …

    l’affichage dans le BO fonctionne mais n’affiche rien
    peu importe ce que j’ecris, cela n’enregistre rien.

    cela viens donc sans doute de l’overide de product dans product.php mais je ne sais pas vraiment comment faire pour doubler l’operation.

    j’ai voullu faire ceci :

    class Product extends ProductCore
    {
    public $pointsforts;
    public $pointsforts1;

    public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null)
    {
    Product::$definition[‘fields’][‘pointsforts’] = array(‘type’ => self::TYPE_HTML, ‘lang’ => true, ‘validate’ => ‘isString’);
    parent::__construct($id_product, $full, $id_lang, $id_shop, $context);

    Product::$definition[‘fields’][‘pointsforts1’] = array(‘type’ => self::TYPE_HTML, ‘lang’ => true, ‘validate’ => ‘isString’);
    parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
    }
    }

    Encore merci pour le tuto et pour ton aide

    • P.Ghiazza a écrit :

      Supprimez simplement la ligne parent::_construct entre les deux Product::$definition et tout devrait rentrer dans l’ordre.

      • nullos a écrit :

        J’ai essayé juste après vous avoir envoyé le premier message …
        Effectivement il recupere bien les informations de la DB mais il ne les update pas :'(

          • nullos a écrit :

            Pouvez vous me confirmer que cette méthode est compatible avec le multi-boutique ?

            Je viens de remarquer que cela fonctionne si je sélectionne une boutique mais par contre si je me met sur toutes les boutiques cela n’enregistre pas …

            • P.Ghiazza a écrit :

              Cette méthode est effectivement compatible avec le multiboutique ET le multilingue. La méthode reste la même pour la natif en mode « Toutes les boutiques » : il faut d’abord activer les modifications avec le petit switch.

  64. lise57 a écrit :

    Bonjour Pauline et merci pour ce tuto,
    J’ai un soucis:
    – Le champ apparaît dans le back-office, mais il reste vide quand j’enregistre.
    – Quand je supprime /www/cache/class_index.php les infos apparaissent coté BO & FRONT.
    – Parcontre j’ai une page blanche lors de l’étape 1 du processus de commande.
    – Je vide le cache et la page blanche disparaît et le champs perso aussi.

    Voici un message d’erreur sur ma page produit : Notice: Undefined property: Product::$delais in /home/***/www/cache/smarty/compile/99/e9/e7/99e9e7772b25ddd4c632a944c56afcf7d459a373.file.product.tpl.php on line 647

    Voici le message d’erreur sur la page commande :
    Fatal error: Call to undefined method Cart::checkProductsAccess() in /home/***/www/controllers/front/OrderController.php on line 47

    Merci d’avance pour votre aide Pauline

    • P.Ghiazza a écrit :

      Bonjour,

      A vous lire, le problème ne peut venir que d’un problème dans l’override de la classe Product.

      Il vous faut donc vérifier ce fichier comme suit :
      – Son emplacement /override/classes/Product.php
      – La variable public $delais;
      – La définition dans le constructeur.

      Supprimez ensuite le cache de l’autoload (class_index.php).*

      Pour ce qui est de l’erreur sur la page commande, je n’en ai aucune idée, je n’ai jamais vu cette erreur. Je pense qu’elle n’est absolument pas liée au tuto. Le seul risque serait que l’override soit mal construit, comme stipulé plus haut.

  65. lise57 a écrit :

    class Product extends ProductCore
    {
    public $delais;
    public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null)
    {
    Product::$definition[‘fields’][‘delais’] = array(‘type’ => self::TYPE_HTML, ‘lang’ => true, ‘validate’ => ‘isString’);
    parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
    }
    }

  66. david a écrit :

    Bonjour Pauline et merci beaucoup pour ce tutorial,

    Je suis arrive a ajouter un champ en back-office pour un input, un text-area et un integer, grace a ce tuto!!

    Par contre, je butte pour la mise en place d’un champ « Select » faisant appel a une table mysql.
    Jai vu le code smarty (dans association.tpl par exemple), ils le font avec un foreach. Mais je ne sais pas ou il faut « proprement » definir le array a parcourir.
    Quel est la marche a suivre?
    Merci BCP

    • P.Ghiazza a écrit :

      L’idéal est de rajouter ta fonction (requête SQL) dans la classe concernée, puis d’assigner la variable smarty dans le initContent de AdminProductsController.
      Tu n’auras ensuite plus qu’à faire un foreach dans le informations.tpl pour construire le select.

  67. Mrzo a écrit :

    Bonjour,

    J’ai appliqué cette méthode sur une 1.6, à la différence que je travaille sur le ficher prices.tpl de l’admin
    Tout fonctionne côté base de données et front office en revanche côté BO je peux remplir mon champs
    il s’injecte bien dans la base de données mais quand je reviens sur la fiche produit en BO le champs et vide
    ou j’obtiens array.

    voici mon code ( appliqué comme la mention après le prix unitaire de presta ( unit_price : prix unitaire au m2,KILO, etc )

    {l s=’per’}{include file= »controllers/products/multishop/checkbox.tpl » field= »MaValeur » type= »tinymce » multilang= »true »}
    MaValeur|htmlentitiesUTF8} » maxlength= »10″ onkeyup= »if (isArrowKey(event)) return ;MaValeur(); » onchange= »MaValeur(); »/>

    Bref je sèche 🙂
    Merci pour ce tuto et pour votre aide .

  68. Mrzo a écrit :

    Hello,

    Je me réponds à moi même, solution trouvé sur le forum Prestashop,
    Si comme vous essayé d’ajouter un champs dans prices.tpl plutôt que dans informations.tpl

    Cela fonctionnait en front office, mais en Back Office le champs ajouté revenait vide ou avec une valeur Array.

    Solution :

    Créez la colonne dans la table Product et non pas dans Product_lang ensuite
    utilisez le code proposé dans ce post en modifiant la valeur de lang de true à false.

    self::TYPE_HTML, ‘lang’ => false, ‘validate’ => ‘isString’);
    parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
    }

    }

    self::TYPE_HTML, ‘lang’ => true, ‘validate’ => ‘isString’);
    parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
    }

    }

    Bye.

    • P.Ghiazza a écrit :

      En fait cela n’a absolument rien à voir. Que ce soit dans informations.tpl, dans prices.tpl ou dans n’importe quelle autre vue, le fonctionnement est le même.
      Si le champ est multilingue, table _product_lang. Sinon, table product.

  69. Jimmy D. a écrit :

    Bonjour,

    J’ai suivi le tuto et ça fonctionne sans soucis pour un champ text. ça s’affiche en dans l’administratio net ça s’enregistre sans problème.

    Par contre, j’ai besoin de 2 champs de type Booléen. J’ai donc modifié les fichiers de la façon suivante :
    Fichier Product.php :
    class Product extends ProductCore
    {
    public $produitsregionaux;
    public $abbio;

    public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null)
    {
    Product::$definition[‘fields’][‘produitsregionaux’] = array(‘type’ => self::TYPE_BOOL, ‘shop’ => true, ‘validate’ => ‘isBool’);
    Product::$definition[‘fields’][‘abbio’] = array(‘type’ => self::TYPE_BOOL, ‘shop’ => true, ‘validate’ => ‘isBool’);
    parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
    }
    }

    Fichier informations.tpl :

    {include file= »controllers/products/multishop/checkbox.tpl » field= »produitsregionaux » type= »radio » onclick= » »}

    Produits régionaux

    produitsregionaux || !$product->isAssociatedToShop()}checked= »checked » {/if} />

    {l s=’Yes’}

    produitsregionaux && $product->isAssociatedToShop()}checked= »checked »{/if} />

    {l s=’No’}

    {include file= »controllers/products/multishop/checkbox.tpl » field= »abbio » type= »radio » onclick= » »}

    AB Bio

    abbio || !$product->isAssociatedToShop()}checked= »checked » {/if} />

    {l s=’Yes’}

    abbio && $product->isAssociatedToShop()}checked= »checked »{/if} />

    {l s=’No’}

    Lorsque je clique sur « enregistrer », les données ne sont pas enregistrées.

    D’avance merci

        • P.Ghiazza a écrit :

          Oui en effet, car le tuto concerne l’ajout d’une zone de texte qui est donc par définition, multilingue. Il convient donc de rester logique : dans la définition du produit, vous avez retiré la variable ‘lang => true’ pour vos champs booléens. Votre champ n’étant donc pas multilingue, il est redistribué vers la table ps_product et non ps_product_lang.

  70. Benjamin a écrit :

    Si cela peut aider certains, j’avais également plusieurs problèmes :

    1. texte qui ne s’enregistre pas. Pour ma part, après avoir vérifié chaque fichier au moins 10 fois, j’ai finalement trouvé une erreur (un autresinfos écrit autres_infos – autresinfos étant le nom de mon champ personnalisé)

    2. pour créer un onglet supplémentaire (sur Presta 1.5.4.1), dans product.tpl :

    – ligne 580 et quelques, sous {$HOOK_PRODUCT_TAB}, j’ai rajouté : {if $product->autresinfos}{l s=’Autres infos’}{/if} (idTabAF peut être remplacé par ce que vous voulez, mais ce nom doit être unique)

    – avant j’ai écrit : {if $product->autresinfos}{$product->autresinfos}{/if}

    Et là, hourra !!

  71. Maryline a écrit :

    Bonjour,

    Je suis au début du tuto et je n’ai pas le dossier « products » dans /override/controllers/admin/templates/products/ afin de coller informations.tpl !
    Dois-je créer ou ce trouve-t-il autre part ?
    Je suis sous Prestashop v1.6.0.14

    Merci.

    • P.Ghiazza a écrit :

      Bonjour,

      Oui évidemment il faut le créer.
      Par contre, si vous bloquez sur ce point, il n’est peut être pas très judicieux de continuer (car cela m’indique que vous êtes novice en développement).

      • Maryline a écrit :

        Bonjour,
        J’ai réussi à bien afficher le champs « pointsforts » dans le back-office, lorsque je souhaite enregistrer, il y a un message d’erreur: « Une erreur s’est produite pendant la mise à jour de l’objet. product () ».

        Je n’ai pourtant pas changé le nom de votre variable « pointforts » pour un premier test…
        Merci de votre retour.

          • Maryline a écrit :

            C’est ok au niveau de la BDD et du back-office, mais c’est au niveau du front-office que le texte ne s’affiche pas…
            Pourtant quand j’examine mon élément, je trouve bien ma correspondante à l’endroit où je souhaite l’afficher… Je l’ai mis dans un h1, je ne peux pas le louper normalement ! Mon cache est bien vide également.

  72. Camille a écrit :

    Bonjour,

    Comment est-ce possible d’afficher ce nouveau champ également sur la présentation des produits dans la page d’accueil ?
    Merci d’avance.

    • P.Ghiazza a écrit :

      Bonjour,

      Là, c’est malheureusement un peu plus compliqué. Il faut retrouver quelle requête est utilisée par le module en question (homefeatured, blockspecials ou blockbestsellers) pour ajouter le champ à la requête SQL (classe Product probablement).

      Cependant, cela devient compliqué au niveau de la vue .tpl car depuis la 1.6 (1.5 ?), la vue utilisée par ces modules est la vue product-list.tpl du thème.

      • Camille a écrit :

        Bonjour,

        Comment faire pour insérer ce nouveau champs dans product-list.tpl?
        {$product->pointsforts} n’affiche rien…

        merci infiniment pour votre aide

  73. Camille a écrit :

    Effectivement, ça à l’air plutôt compliqué…
    Je vais fouiller un peu mon thème pour voir quelle requête est utilisé en page d’accueil…
    Vous seriez capable de le faire en mettant les mains dans le cambouis ?

    • P.Ghiazza a écrit :

      Bonjour,

      D’un point de vue SQL, l’explication est dans la partie 4.
      En revanche, dans la vue, la variable est un tableau $products.
      Il faut donc écrire {$product.champ} pour l’afficher (et non {$product->champ}).

  74. Maryline a écrit :

    Bonjour,

    Tout marche vraiment bien lorsque j’ai ajouter le champs supplémentaire.
    J’ai une multiboutique avec une boutique public et une boutique pro.

    Mais depuis quelques jours, sur la boutique pro. j’ai quelques champs quand ont sautés.
    Il sont toujours présents mais ce que j’ai saisi ne s’affiche pas.

    Ce qui est étonnant c’est que c’est le même produits, avec la même fiche produit et que sur l’espace public le champs et la saisie s’affiche bien.

    Dans la base de donnée le champs est également rempli…

    Avez-vous peut-être une solution pour ce problème ?

    Merci d’avance.

    • P.Ghiazza a écrit :

      Bonjour,

      À vous lire, j’ai simplement l’impression qu’il vous manque le paramètre multi boutique pour ce champ. Il vous suffit pour cela de rajouter ‘shop’ => true dans la définition de la classe. Si votre champ n’est pas de type lang (donc inscrit dans la table ps_product), il vous faudra créer ce champ également dans la table ps_product_shop’.

        • Marylin a écrit :

          Finalement, ajouter  » ‘shop’ => true  » a résolu le problème que quelques jours.
          Je vais effectivement créer le champs dans la table ps_product_shop malgré qu’il soir déjà inscrit dans la table ps_product.

      • Maryline a écrit :

        Bonjour,

        J’ai donc créer le champ dans la table ps_product_shop et lorsque je veux effectuer des modifications dans le champ niveau back-office, j’ai une erreur  » Une erreur s’est produite pendant la mise à jour de l’objet. product ()  »
        Ce qui est bizarre c’est que le champs saute que sur 3/4 produits…
        Merci d’avance de votre retour.

        • Maryline a écrit :

          Bonjour

          Pour enlever l’erreur j’ai dû enlever ‘shop’ => true dans la classe product.tpl
          Mais du coup j’ai quelques champs qui sautent dans ma seconde boutique…
          Comment faire ?

          Merci

  75. Sandrine a écrit :

    Bonjour Pauline,
    Merci pour le tuto ! J’utilise la version 1.6.1.3 de PrestaShop, tout fonctionne parfaitement sauf lorsque j’active le cache, je ne sais plus quoi faire !
    Avez-vous une idée svp ? Je vous remercie.

  76. Sébastien a écrit :

    Bonjour, j’ai ajouter un champs à menu déroulant (oui, non) mais tout fonctionne à part une chose, c’est en admin mon choix oui ou non ce valide bien dans ma base de donnée et sur mon front office, mais en admin le champs reste toujoours sur celui qui est par défaut, dans mon cas le NON.

    j’ai modifier de la facon suivante pour en arrivé la :

    j’ai ajouter ma ligne dans override product.php :

    class Product extends ProductCore
    {
    public $editionoriginale;
    public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null)
    {
    Product::$definition[‘fields’][‘editionoriginale’] = array(‘type’ => self::TYPE_STRING, ‘shop’ => true, ‘validate’ => ‘isGenericName’, ‘values’ => array(‘non’, ‘oui’), ‘default’ => ‘non’);
    parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
    }
    }

    j’ai ajouter une table supplémentaire dans ma base de données phpmyadmin -> xxx_product_shop :

    Nom : editionoriginale

    Type : ENUM

    Taille/Valeurs* : ‘non’,’oui’

    Défaut : Tel que défini : non

    Interclassement…… etc…

    et j’ai rajouté mes lignes dans mon informations.tpl de l’admin pour avoir mon champs :

    {include file= »controllers/products/multishop/checkbox.tpl » field= »editionoriginale » type= »default »}

    {l s=’editionoriginale’}

    editionoriginale == ‘non’}selected= »selected »{/if} >{l s=’non’}
    editionoriginale == ‘oui’}selected= »selected »{/if} >{l s=’oui’}

    voilà merci de me dire si vous voyez mon erreur.
    Sébastien

  77. Mick a écrit :

    Bonjour et merci pour ce tuto.
    Je suis en 1.6, tout semble fonctionner, j’ai seulement un petit problème d’affichage.
    Un test sur la variable {$product.auteur} (auteur est mon nouveau champ) ne donne rien à l’affichage et par contre, la valeur de ma variable se concatène avec le nom du produit (sur la fiche produit et la product-list).
    J’ai > »nom produit nouveau champ », partout ou apparaît d’habitude seulement le nom du produit
    SI vous avez une idée ? Je continue à chercher d’où vient le problème… Merci

    • P.Ghiazza a écrit :

      Bonjour,

      Comme cela, je serais tentée de penser qu’il s’agit d’un problème dans le HTML du champ. Pouvez-vous vérifier que les mentions au champ copié/collé aient bien toutes été modifiées ?

  78. Plent a écrit :

    Bonjour Pauline,

    J’ai un presta 1.6, j’ai vérifié et revérifié mais j’ai toujours l’erreur dans mon BO :

    Notice à la ligne 391 du fichier …\tools\smarty\sysplugins\smarty_internal_templatebase.php(157) : eval()’d code
    [8] Undefined property: Product::$compte_vente

    J’ai bien sur forcé la compil, supprimé l’utilisation du cache et vidé celui-ci, rien n’y fait.
    (j’ai bien remplacé pointsforts par compte_vente partout)
    Merci mille fois pour votre aide et bravo pour le tuto,

    • P.Ghiazza a écrit :

      Bonjour,

      Quelques points à vérifier :
      – Avez-vous bien supprimé le fichier /cache/class_index.php ?
      – La variable « public $compte_vente » est-elle bien déclarée dans la classe ET dans sa fonction construct ?
      – Le champ « compte_vente » a t-il bien été créé dans la bonne table ? (ps_product pour les champs INT, BOOL, ps_product_lang pour les champs VARCHAR, TEXT)
      – Vérifiez aussi que la table choisie soit bien associée à la variable « lang => TRUE » dans la définition.

      Je voterai quand même pour le problème numéro 2.

      • Plent a écrit :

        Bravo pour votre temps de réponse !

        Oups ! J’avais oublié de mettre en ligne Product.ph, je n’ai donc plus de message d’erreur.
        Cependant, le label et la description s’affichent bien dans le BO mais pas le champ. cette partie donc :

        {include file= »controllers/products/textarea_lang.tpl » languages=$languages
        input_name=’compte_vente’
        input_value=$product->compte_vente
        }

        J’ai encore du oublier quelques chose ?

        A noter : je n’ai pas de fichier /cache/class_index.php !!

        Un grand merci a vous

        • Plent a écrit :

          Pauline,

          Cela fonctionne parfaitement, oubliez ma remarque précédente, j’avais encore fait une erreur avec mes gros doigts…

          Merci encore pour ce sympathique tuto

  79. Aurélien a écrit :

    Bonjour Pauline

    Et un super merci pour ce tuto, très bien expliqué et qui fonctionne très bien.

    Les erreurs commencent quand j’essaye d’aller un peu plus loin et de créer juste un 2e champs.
    Après avoir soigneusement créé une nouvelle table nouveau_champ

    Je reprends mon override/classes/product.php

    déclare ma variable de nouveau et insère dans la function __construct

    self::TYPE_HTML, ‘lang’ => true, ‘validate’ => ‘isString’);
    Product::$definition[‘fields’][‘nouveau_champ’] = array(‘type’ => self::TYPE_HTML, ‘lang’ => true, ‘validate’ => ‘isString’);
    parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
    }

    }

    Dans mon informations.tpl

    {include file= »controllers/products/multishop/checkbox.tpl » field= »guide_pointure » type= »tinymce » multilang= »true »}

    {l s=’nouveau champ’}

    {include
    file= »controllers/products/textarea_lang.tpl »
    languages=$languages input_name=’nouveau_champ’
    input_value=$product->nouveau_champ}

    Bizarrement, sur ce nouveau_champ, le champ s’affiche en backoffice, la table et le contenu renseigné s’impriment bien sur la base de donnée (phpmyadmin) mais le contenu ne ressort pas sur le backoffice et donc également sur le front…

    As-tu eu déjà ce même problème ?
    Merci pour l’échange si tu as le temps !

  80. Charles a écrit :

    Bonjour,

    Merci pour le tuto =)
    J’ai la version 1.6.1.4 de prestashop et j’ai l’erreur suivante lorsque je me connecte au backoffice après avoir suivi votre tuto :
    Parse error: syntax error, unexpected ‘class’ (T_CLASS) in /var/www/vhosts/vps249xxx.ovh.net/httpdocs/test.monsite.fr/override/classes/Product.php on line 3

    Merci d’avance de votre aide 😉

    • Charles a écrit :

      Je viens de régler le bug ! Je m’auto réponds non pas par manque de relations sociales mais plutôt dans un esprit de partage =) =) !!
      En fait en copiant/collant le code du tuto, cela ajoute des espaces qui entrave l’interprétation. En claire, ré-indenté votre code si vous avez ce bug.

      Bonne soirée

  81. Julien a écrit :

    Bonjour Pauline et merci pour ce tuto !
    Je suis en PS 1.6.1.2

    Comme d’autres j’ai un problème au niveau de l’affichage :
    – Le champ s’affiche correctement en backoffice
    – La valeur saisie s’enregistre dans la BDD
    – La valeur enregistrée en BDD ne s’affiche pas dans le champ en BDD
    – La valeur enregistrée en BDD ne s’affiche pas sur le front

    Override/classes/Product.php
    self::TYPE_STRING, ‘lang’ => true, ‘validate’ => ‘isString’);
    parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
    }
    }
    ?>

    Override/controllers/admin/templates/products/informations.tpl j’ai ajouté :

    {$bullet_common_field} {l s=’Date de livraison’}

    datelivraison|escape:’html’:’UTF-8′} » />

    Et sur Product.tpl j’ai ajouté {$product->datelivraison}

    Dans la table ps_product_lang j’ai ajouté la colonne datelivraison en VARCHAR 255

    Je ne vois vraiment pas où ça cloche … 🙂

  82. Richard a écrit :

    Bonjour à tous,

    Merci pour ce tuto Pauline =)
    Je l’ai suivi avec soin (prestashop 1.6+) et mon champs fonctionne correctement. Néanmoins dans mon backoffice, les autres rubriques des produits (prix, SEO, livraisons…) ne sont plus accessibles. C’est à dire que quand clic dessus, au lieu d’avoir les formulaires de config relatifs à la rubrique, j’ai rien (un fond gris).
    J’ai vidé le cache comme le propose l’article mais rien n’y fait.

    Avez-vous déjà eu ce problème ?

    Merci d’avance

    Richard

  83. Dina a écrit :

    Bonjour,

    J’utilise la version 1.6.0.5.

    Après avoir suivi ce tuto j’ai pu afficher un nouveau champ dans le backoffice, mon souci c’est que l’enregistrement ne passe pas après cette modification.

    Message d’erreur: Le champ link_rewrite est obligatoire au moins en Français (French)

    1. j’ai ajouté une colonne sur ps_product: name: monchamp; type: DECIMAL; Taille: 20,6 ;

    2. et sur override/classes/Product.php

    class Product extends ProductCore
    {
    public $monchamp=0;

    public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null)
    {
    Product::$definition[‘fields’][‘monchamp’] = array(‘type’ => self::TYPE_FLOAT, ‘lang’ => true, ‘validate’ => ‘isPrice’);
    parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
    }

    }

    3. sur override/controllers/admin/templates/products/prices.tpl

    Mon nouveau champ

    Merci d’avance,

  84. GUIBLIN a écrit :

    Bonjour,
    Super Tuto j’ai passé plusieurs heures dessus et tout bien relu. Le soucis j’ai ajouter 10 champs mais aucun ne garde en mémoire dans la fiche produit.
    J’ai relus le tutoriel mais rien à faire …
    Mes classes on été crée dans la BDD comme indiqué dans l’étape 1.

    Si vous avez une solution je suis preneurs. =)

    Merci d’avance

  85. Thalie a écrit :

    Bonjour Pauline,
    Je te remercie pour tes tuto toujours aussi clairs.
    Tout s’est bien passé pour moi. Cependant, j’aurai 2 questions :
    J’aurai souhaité dans l’un de mes champs mettre un lien cliquable qui permettrait au visiteur de visualiser la catégorie parente du produit qu’ils consultent.
    J’ai donc pensé à 2 pistes :
    – Comment faire apparaitre le champ modifiable (comme l’est actuellement la description 1 et 2) sous forme de plage éditable en Back Office avec l’editeur tinyMCE?
    – Comment créer un appel automatique d’une fonction type : id produit = affichage catégorie parente + lien ?
    Merci d’avance

    • P.Ghiazza a écrit :

      Bonjour,

      Dans ton cas, il suffit simplement d’appeler la fonction native pour les catégories.
      Sans vérification, il s’agit de quelque chose comme ça :
      {Link::getCategoryLink($product->id_category_default)}
      (Voir dans category.tpl si ceci ne fonctionne pas)

  86. ludovic a écrit :

    bonjour,

    merci pour le travail fourni.
    moi j’ai un gros problême, je n’ai pas le dossier /override/controllers/admin/templates/products/ donc je ne sais pas ou coller mon fichier??

    du coup rien ne s’affiche dans le BO

    je suis en version 1.6.1.5

    merci d’avance

  87. Christelle a écrit :

    Bonjour Pauline,

    Je suis sur la version 1.6.1.1 le champ apparait bien dans le backoffice mais pas sur le front office.

    Dans la page product.tpl j’ai mis ce code :

    {if $product->pointsforts}

    {l s=Points forts’}{/if}
    {if isset($product) && $product->pointsforts}

    {$product->pointsforts}

    {/if}

    Ai-je fais une erreur ?

    Merci d’avance pour ta réponse et un grand merci pour ton tuto !

  88. Frederic a écrit :

    Bonjour

    Je ne trouve pas ces lignes dans le fichier informations tpl

    {include file= »controllers/products/multishop/checkbox.tpl » field= »pointsforts » type= »tinymce » multilang= »true »}
    {$bullet_common_field} {l s=’Points forts :’}
    ({l s=’Les points forts du produit’})

    {include file= »controllers/products/textarea_lang.tpl » languages=$languages
    input_name=’pointsforts’
    input_value=$product->pointsforts
    }

  89. Ed a écrit :

    (je reprends…)
    Bonjour,
    Merci pour ce tuto et la qualité des réponses apportées au différentes problématiques.
    J’ai testé en local le tuto ; tout fonctionne parfaitement bien sauf pour le product-list.tpl.
    Rien ne se passant, j’ai testé en prod : pareil tout parfait sauf dans le product-list.tpl.
    J’ai testé avec pl.pointsforts, avec pointsforts sans pl., avec pl.`pointsforts`, mais rien n’y fait.
    J’ai bien ‘path’ => ‘classes/Category.php’ dans le class_index.php régénéré.
    Je ne vois plus quoi faire pour que ça fonctionne.
    J’appelle bien {$product.pointsforts} pourtant…
    Côté product.tpl, nickel !!!!
    Merci d’avance

    • P.Ghiazza a écrit :

      Et pourtant… De toute évidence il y a bien un problème quelque part 😉
      Dans le class_index, vous êtes censé avoir ces deux blocs :

      ‘Category’ =>
      array (
      ‘path’ => ‘override/classes/Category.php’,
      ‘type’ => ‘class’,
      ‘override’ => false,
      ),
      ‘CategoryCore’ =>
      array (
      ‘path’ => ‘classes/Category.php’,
      ‘type’ => ‘class’,
      ‘override’ => false,
      ),

      Sinon, videz votre cache.
      Pour ce qui est de la requête à modifier dans Category.php, ajoutez
      votre champ à la ligne 749 afin d’être certain qu’il n’y ai pas d’erreur,
      comme suit :
      INTERVAL ‘.(int)$nb_days_new_product.’ DAY)) > 0 AS new, product_shop.price AS orderprice, pl.pointsforts
      FROM …

      • Ed a écrit :

        Merci pour ce premier retour.
        effectivement dans le class_index j’ai :
        ‘Category’ =>
        array (
        ‘path’ => ‘’,
        ‘type’ => ‘class’,
        ‘override’ => false,
        )
        Si j’ajoute ‘path’ => ‘override/classes/Category.php’, page blanche.
        Cache vidé et revidé, tout le reste est ok.
        Merci

      • franck a écrit :

        Bonjour pauline tout d’abord merci pour ce super tuto et à toute la communauté d’entre aide c’est génial….alors pour moi ça fonctionne j’ai bien mon champs en backoffice je peux modifier il s ‘affiche dans product mais je bloque sur la requete pourriez vous m’aider s’il vous plait ? la voila -> /** Return only the number of products */
        if ($get_total) {
        $sql = ‘SELECT COUNT(cp.`id_product`,pl.’cat_produit’) AS total
        FROM `’._DB_PREFIX_.’product` p
        ‘.Shop::addSqlAssociation(‘product’, ‘p’).’
        LEFT JOIN `’._DB_PREFIX_.’category_product` cp ON p.`id_product` = cp.`id_product`
        WHERE cp.`id_category` = ‘.(int)$this->id.
        ($front ? ‘ AND product_shop.`visibility` IN (« both », « catalog »)’ : »).
        ($active ? ‘ AND product_shop.`active` = 1′ : »).
        ($id_supplier ? ‘AND p.id_supplier = ‘.(int)$id_supplier : »);

        return (int)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql);
        }

        merci de votre retour ,

        • P.Ghiazza a écrit :

          Bonjour, comme l’indique le commentaire de la requête que vous avez modifiée, celle-ci retourne uniquement un nombre de produits.
          Il vous faut modifier celle un peu plus loin dans la fonction, commençant par $sql = (ligne 742 approximativement).

  90. Valentin Carpentier a écrit :

    Bonjour,

    C’est impeccable cela fonctionne très bien pour moi également en Prestashop version 1.6.1.4.

    Merci pour cet article.

    A bientôt !

  91. sevie a écrit :

    Bonjour Pauline,

    Merci pour ce tuto ! J’ai néanmoins un petit souci pour l’enregistrement du champ dans ma base de données :
    Je suis sur la version 1.6.0.14 de Prestashop.
    Le « nouveau_champ » a été créé dans la BDD dans la table « prefixe_product » et est de type varchar.
    J’ai suivi le tuto pour la création de mon champs uniquement en back-office (je n’ai pas besoin de faire apparaitre ce champs en front).

    J’ai fait un override de informations.tpl dans override/controllers/admin/templates/products avec le bout de code rajouté de la façon suivante après le champs référence de la fiche produit :

    {$bullet_common_field} {l s=’référence nouveau_champ’}

    nouveau_champ|htmlentitiesUTF8} » />

    J’ai créér le fichier Product.php et l’ai placé dans override/classes avec code suivant :

    self::TYPE_STRING, ‘lang’ => true, ‘validate’ => ‘isString’);
    parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
    }
    }
    ?>
    Je supprime le fichier class_index.php dans le dossier cache.

    Le champ s’affiche bien dans le back-office, le contenu du champ déjà présent dans la base de données pour certains produits s’affiche bien aussi… Jusqu’ici pas de problème : par contre impossible de le modifier ! Si je souhaite changer le contenu de ce champs : à l’enregistrement il revient à sa valeur initiale !

    Une idée sur mon problème ?

    Merci beaucoup pour votre aide !

  92. Paul a écrit :

    Bonjour , Super tuto qui colle parfaitement à ce que je souhaitais faire, content d’être tombé dessus.

    Par contre j’ai un petit soucis que je n’arrive pas à résoudre malgré mes multiples tentatives (et après avoir lu la longue liste de commentaires)

    Je souhaite afficher la valeur dans le product-list.tpl . J’ai donc modifié le fichier /classes/category.php , ligne 744 pour ma part $sql =… et rajouté ma valeur de cette manière : pl.`name`, pl.`perma_reduc`, …

    j’ai cependant toujours la même erreur qui s’affiche :

    Notice: Trying to get property of non-object in C:\wamp64\www\tools\smarty\sysplugins\smarty_internal_templatebase.php(157) : eval()’d code on line
    197

    auriez vous une idée sur la solution à adopter ?
    merci d’avance

  93. Christophe a écrit :

    Bonjour merci pour ce tuto parfaitement fonctionnel, sauf que je n’arrivais pas à faire apparaitre mon champs sur la liste des produits (catégorie).
    je suis sur un leo theme donc la liste des produit est dans le le fichier product-item.tpl (charger en include dans le fichier product-list.tpl)

    Pour résoudre le problème j’ai dupliqué le fichier Catalogue.php et renommer « class CategoryCore extends ObjectModel » en « class Category extends ObjectModelcore » que j’ai placé dans le dossier class du dossier override et la sa marche. 😉

    Pas oublier de vider le cache de presta et virer le fichier « class_index.php » dans le dossier cache principal.

    Merci.
    Christophe.

    • Pierre a écrit :

      bonjour Christophe,

      Désolé de te déranger mais j’avais une question qui n’a rien a voir avec ce topic.
      Je vois que tu as un theme leo theme et j’ai un problème que je n’arrive pas à résoudre car nous avons changé notre thème prestashop en janvier 2017 par un leotheme.
      Depuis le remplacement de notre thème par celui de leo nous ne faisons que perdre en référencement.
      De plus google ne vient quasiment plus voir notre site…
      Nous avons fait intervenir une personne sur notre site qui n’a pas trouvé de problème.
      Si nous regardons le site en mode vue google comme ceci :

      cache:www.lccm.fr

      Le site est complètement éclaté… je ne sais pas si cela a une vrai importance sur le seo
      Enfin voila je voulais savoir si tu as eu toi aussi des problèmes de référencement avec ce thème ?
      Je te remercie.

  94. Syl20 a écrit :

    Bonjour,
    Super tuto, merci encore.

    J’ai un petit souci.

    Je me suis créé 3 produits de test dans ma base pour mettre en place ce tuto et pour régler l’affichage en front (sur le product_list.tpl).

    Dans le BO, sur mon produit_1, je mets la valeur dans mon nouveau champs Text, aucun souci, que ce soit en BO, en Front ou dans la BDD.

    Mais dès que je mets toujours dans le BO, sur mes produits 2 et 3, la même info, dans le même champs nouvellement créé, j’ai une erreur : Le champ text_fields est invalide.

    C’est assez incroyable car si je modifie mon champs du produit_1, aucun souci. Mais je ne peux rien créer sur mes produits 2 et 3.

    Bizarre, non?

    Une idée?

    Merci d’avance.

  95. Benjamin a écrit :

    Hello !

    Cela fonctionne bien mais j’ai un problème bien **** !

    Lorsque je modifie la mise en page du contenu dans le champ crée, cela ne fonctionne pas !
    Exemple : je mets une ligne en gras, j’enregistre, le gras a disparu !

    Any idée ?

  96. LEONARD a écrit :

    Bonjour,

    Merci pour ce tuto génial !

    Je rencontre un petit problème, celà fonctionne parfaitement sur les catégories et sous catégories, mais les nouvelles catégories et sous catégories sur prestashop crées depuis l’ajout du champs « points forts » ne sont pas prises en compte et celà affiche à la place un message de ce type :

    Notice: Undefined index: pointsforts in /httpdocs/cache/smarty/compile/d6/af/cf/d6afcf4ff95b3561f23bae375daa1e463ada6458.file.product-list.tpl.php on line 212

    Qu’ai-je oublié? merci d’avance de votre aide.

  97. David a écrit :

    Bonjour, merci pour ce tuto qui fonctionne très bien avec presta1.6

    Par contre serait-il possible d’avoir une mise à jour de ce tutoriel pour pouvoir l’utiliser avec prestashop 1.7, car j’ai l’impression que la version 1.7.1.1 a l’air d’être très stable surtout qu’ils ont rajouté le module PayPal + le module 1clic qui permet de passer de la 1.6 à 1.7 et donc je pense migrer sur cette version d’ici quelques jours.

    Mais la je suis bloqué car j’ai basé mon travail sur votre tuto qui ne fonctionne pour le moment que sur la 1.6.

    En espérant que vous y et la solution.

    Merci

  98. Jean-Marc PIPON a écrit :

    Merci infiniment !

    Voilà le tuto qu je recherchais depuis un moment !

    je viens de résoudre mon problème d’URL canonique sur lequel je butais depuis quelques jours.

    J’ai donc ajouté un champ dans la table PS_product_lang dans lequel je place mes url_canoniques (par un petit script PHP maison)
    J’ai créée comme très bien indiqué un override de product
    Puis j’ai modifié le product.tpl dans catalog (il m’a fallu du temps pour trouver)

    Et ça marche impeccable !

    Donc, merci encore pour ce tuto et cet excellent état d’esprit de partager son savoir !

    je vais garder ce site dans mes liens et revenir dessus très bientôt !

    Jean-Marc

Laisser un commentaire

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