[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"theme-db":3,"$fSAjbBROTnIEgKsj3Gb7kcWmXgRnsR7Ej9Fo3c5V0Gm8":22,"$fKnz2vuX4bZz1LbUTiuFsvSZ3e07l5_5fqNYp4Tzdhi8":63,"megamenu":144,"$fFW5trCWvfyUdp-xOi64VEY64buZvAlsM2sctirqGHVI":200,"header-db":214,"footer-db":227},{"theme":4},{"colors":5,"typography":13,"ui":17,"defaultColorMode":21},{"primary":6,"secondary":7,"background":8,"foreground":9,"muted":10,"headerBg":11,"footerBg":12,"topBarBg":9,"topBarText":11},"#4F46E5","#0D9488","#F9FAFB","#111827","#6B7280","#ffffff","#020617",{"fontFamily":14,"fontUrl":15,"baseFontSize":16},"Inter, system-ui, sans-serif","https:\u002F\u002Ffonts.googleapis.com\u002Fcss2?family=Inter:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,700;0,800;0,900;1,400;1,700&display=swap","16px",{"borderRadius":18,"contentWidth":19,"shadow":20},"lg","7xl",true,"light",{"title":23,"slug":24,"metaDescription":25,"category":26,"tags":27,"difficulty":33,"psVersions":34,"content":38,"faq":39,"tldr":58,"readingTime":59,"generatedAt":60,"publishDate":60,"relatedArticles":61,"sourceCategory":62},"Erreur Smarty description produit PrestaShop : diagnostic et correction","erreur-smarty-description-produit-prestashop-diagnostic-correction","Résolvez l'erreur smarty_internal_templatebase.php sur la description produit PrestaShop. Diagnostic complet, code corrigé et bonnes pratiques Smarty.","debug",[28,29,30,31,32,26],"smarty","description produit","template","product.tpl","erreur PHP","intermediaire",[35,36,37],"1.6","1.7","8.x","\u003Ch2>Comprendre l'avertissement smarty_internal_templatebase.php sur les descriptions produit\u003C\u002Fh2>\n\u003Cp>Un avertissement PHP faisant référence à \u003Ccode>smarty_internal_templatebase.php\u003C\u002Fcode> ligne 157 apparaît fréquemment lorsqu'on manipule les descriptions produit dans les templates PrestaShop. Ce message peut sembler alarmant, mais il s'agit généralement d'un \u003Cstrong>warning PHP\u003C\u002Fstrong> (et non d'une erreur fatale) qui se manifeste uniquement lorsque le \u003Cstrong>mode debug est activé\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Cp>Ce guide détaille les causes possibles et les solutions concrètes pour résoudre ce problème.\u003C\u002Fp>\n\u003Ch2>Pourquoi cet avertissement apparaît\u003C\u002Fh2>\n\u003Ch3>Le mode développeur amplifie les alertes\u003C\u002Fh3>\n\u003Cp>PrestaShop dispose d'un mode debug qui affiche tous les avertissements PHP, y compris ceux normalement masqués en production. Si vous voyez ce type de message, vérifiez d'abord si le mode développeur est activé :\u003C\u002Fp>\n\u003Cp>\u003Cstrong>PrestaShop 1.6 :\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-php\">\n\u002F\u002F config\u002Fdefines.inc.php\ndefine('_PS_MODE_DEV_', true); \u002F\u002F true = mode debug actif\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>PrestaShop 1.7 \u002F 8.x :\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-php\">\n\u002F\u002F .env ou app\u002Fconfig\u002Fparameters.php\n\u002F\u002F Vérifier que APP_DEBUG n'est pas à true en production\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>En production, ce paramètre doit \u003Cstrong>toujours\u003C\u002Fstrong> être sur \u003Ccode>false\u003C\u002Fcode>. L'avertissement disparaîtra, mais cela ne signifie pas que le problème sous-jacent est résolu — il est simplement masqué.\u003C\u002Fp>\n\u003Ch3>Les commentaires Smarty mal placés\u003C\u002Fh3>\n\u003Cp>La cause la plus fréquente de ce bug est une \u003Cstrong>mauvaise utilisation des commentaires Smarty\u003C\u002Fstrong> dans le template \u003Ccode>product.tpl\u003C\u002Fcode>. La syntaxe des commentaires dans Smarty est la suivante :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-smarty\">\n{* Ceci est un commentaire Smarty — tout le contenu entre ces balises est ignoré *}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Une erreur classique consiste à commenter involontairement le code d'affichage de la description :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-smarty\">\n{if $product-&gt;description_short}\n    {* &lt;div id=\"short_description_content\" class=\"rte align_justify\" itemprop=\"description\"&gt;\n        {$product-&gt;description_short}\n    &lt;\u002Fdiv&gt; *}\n{\u002Fif}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Dans cet exemple, le bloc \u003Ccode>{* ... *}\u003C\u002Fcode> \u003Cstrong>neutralise entièrement\u003C\u002Fstrong> l'affichage de la description courte. Le template évalue la condition (\u003Ccode>description_short\u003C\u002Fcode> existe), entre dans le bloc \u003Ccode>{if}\u003C\u002Fcode>, mais ne rend rien car le contenu est commenté. Résultat : aucune description affichée, et selon la version de Smarty, un avertissement peut être généré.\u003C\u002Fp>\n\u003Ch3>La correction\u003C\u002Fh3>\n\u003Cp>Supprimez les balises de commentaire pour restaurer l'affichage :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-smarty\">\n{if $product-&gt;description_short}\n    &lt;div id=\"short_description_content\" class=\"rte align_justify\" itemprop=\"description\"&gt;\n        {$product-&gt;description_short}\n    &lt;\u002Fdiv&gt;\n{\u002Fif}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Afficher la description longue dans le template\u003C\u002Fh2>\n\u003Cp>Si vous souhaitez afficher la \u003Cstrong>description longue\u003C\u002Fstrong> du produit (au lieu ou en complément de la description courte), utilisez la variable Smarty correspondante :\u003C\u002Fp>\n\u003Cp>\u003Cstrong>PrestaShop 1.6 (fichier \u003Ccode>product.tpl\u003C\u002Fcode>) :\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-smarty\">\n{if $product-&gt;description}\n    &lt;div class=\"rte\" itemprop=\"description\"&gt;\n        {$product-&gt;description}\n    &lt;\u002Fdiv&gt;\n{\u002Fif}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>PrestaShop 1.7 \u002F 8.x (fichier \u003Ccode>product.tpl\u003C\u002Fcode> du thème) :\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-smarty\">\n{if $product.description}\n    &lt;div class=\"product-description\" itemprop=\"description\"&gt;\n        {$product.description nofilter}\n    &lt;\u002Fdiv&gt;\n{\u002Fif}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cblockquote>\u003Cp>\u003Cstrong>Attention au changement de syntaxe :\u003C\u002Fstrong> en PrestaShop 1.7+, les variables produit utilisent la notation tableau (\u003Ccode>$product.description\u003C\u002Fcode>) et non plus objet (\u003Ccode>$product->description\u003C\u002Fcode>). Le modificateur \u003Ccode>nofilter\u003C\u002Fcode> est nécessaire pour que le HTML de la description soit rendu correctement.\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Ch2>Quand la description ne s'enregistre pas en base de données\u003C\u002Fh2>\n\u003Cp>Si le template est correct mais que la description reste vide, le problème se situe en amont : la donnée n'est pas persistée en base.\u003C\u002Fp>\n\u003Ch3>Vérifier la présence en base de données\u003C\u002Fh3>\n\u003Cp>Interrogez directement la table \u003Ccode>ps_product_lang\u003C\u002Fcode> :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-sql\">\nSELECT id_product, id_lang, description_short, description\nFROM ps_product_lang\nWHERE id_product = VOTRE_ID_PRODUIT;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Si les champs sont vides, le problème vient de la sauvegarde du produit.\u003C\u002Fp>\n\u003Ch3>Investiguer les overrides\u003C\u002Fh3>\n\u003Cp>Un \u003Cstrong>override de la classe \u003Ccode>Product.php\u003C\u002Fcode>\u003C\u002Fstrong> peut interférer avec la sauvegarde des descriptions. Vérifiez :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">\n# PrestaShop 1.6\nls -la override\u002Fclasses\u002FProduct.php\n\n# PrestaShop 1.7 \u002F 8.x\nls -la override\u002Fclasses\u002FProduct.php\nls -la var\u002Fcache\u002F*\u002Fclass_index.php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Si un override existe, examinez s'il redéfinit la méthode \u003Ccode>add()\u003C\u002Fcode>, \u003Ccode>update()\u003C\u002Fcode> ou les définitions de champs dans \u003Ccode>$definition\u003C\u002Fcode>. Un champ \u003Ccode>description_short\u003C\u002Fcode> absent ou mal configuré dans l'override empêchera la sauvegarde.\u003C\u002Fp>\n\u003Cp>Pour PrestaShop 8.x, pensez également à vérifier les éventuels \u003Cstrong>décorateurs de service Symfony\u003C\u002Fstrong> qui pourraient intercepter la logique de sauvegarde produit.\u003C\u002Fp>\n\u003Ch3>Régénérer le cache de classes\u003C\u002Fh3>\n\u003Cp>Après toute modification d'override :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">\n# Supprimer le cache de l'index de classes\nrm -f var\u002Fcache\u002Fprod\u002Fclass_index.php\nrm -f var\u002Fcache\u002Fdev\u002Fclass_index.php\n\n# Ou via le back-office : Paramètres avancés &gt; Performances &gt; Vider le cache\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Bonnes pratiques pour éviter ce type de bug\u003C\u002Fh2>\n\u003Col>\n\u003Cli>**Désactivez le mode debug en production** — les warnings Smarty ne doivent jamais être visibles par vos clients.\u003C\u002Fli>\n\u003Cli>**Utilisez un éditeur avec coloration Smarty** — les commentaires `{* *}` seront visuellement distincts du code actif, évitant les oublis.\u003C\u002Fli>\n\u003Cli>**Testez sur un environnement de préprod** — activez le mode debug uniquement sur une copie de votre boutique.\u003C\u002Fli>\n\u003Cli>**Versionnez vos templates** — un `git diff` révèle instantanément un commentaire ajouté par erreur.\u003C\u002Fli>\n\u003Cli>**Documentez vos overrides** — tout override de `Product.php` doit être commenté et justifié.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>Récapitulatif des variables Smarty description produit\u003C\u002Fh2>\n\u003Ctr>\u003Cth>Variable\u003C\u002Fth>\u003Cth>Version\u003C\u002Fth>\u003Cth>Description\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>`{$product->description_short}`\u003C\u002Fth>\u003Cth>1.6\u003C\u002Fth>\u003Cth>Description courte (syntaxe objet)\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>`{$product->description}`\u003C\u002Fth>\u003Cth>1.6\u003C\u002Fth>\u003Cth>Description longue (syntaxe objet)\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>`{$product.description_short}`\u003C\u002Fth>\u003Cth>1.7 \u002F 8.x\u003C\u002Fth>\u003Cth>Description courte (syntaxe tableau)\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>`{$product.description}`\u003C\u002Fth>\u003Cth>1.7 \u002F 8.x\u003C\u002Fth>\u003Cth>Description longue (syntaxe tableau)\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>`nofilter`\u003C\u002Fth>\u003Cth>1.7 \u002F 8.x\u003C\u002Fth>\u003Cth>Modificateur pour rendre le HTML brut\u003C\u002Fth>\u003C\u002Ftr>",[40,43,46,49,52,55],{"q":41,"a":42},"Pourquoi la description de mon produit PrestaShop ne s'affiche pas ?","Trois causes principales : le code d'affichage est commenté dans le template (balises Smarty {* *} autour du bloc HTML), la description n'est pas enregistrée en base de données (vérifiez la table ps_product_lang), ou un override de Product.php interfère avec la sauvegarde. Commencez par inspecter votre fichier product.tpl pour détecter d'éventuels commentaires Smarty masquant le code.",{"q":44,"a":45},"Comment fonctionne la syntaxe des commentaires Smarty dans PrestaShop ?","Les commentaires Smarty utilisent les balises {* pour ouvrir et *} pour fermer. Tout le contenu entre ces deux balises est ignoré par le moteur de template et ne sera pas rendu dans le HTML final. C'est une cause fréquente de bugs quand un développeur commente temporairement du code et oublie de le réactiver.",{"q":47,"a":48},"Quelle est la différence entre $product->description et $product.description dans PrestaShop ?","La syntaxe $product->description (notation objet) est utilisée dans PrestaShop 1.6. À partir de PrestaShop 1.7, la syntaxe a changé pour $product.description (notation tableau). De plus, en 1.7 et 8.x, il faut ajouter le modificateur nofilter ({$product.description nofilter}) pour que le HTML contenu dans la description soit correctement rendu.",{"q":50,"a":51},"L'erreur smarty_internal_templatebase.php est-elle grave pour ma boutique PrestaShop ?","Non, il s'agit d'un avertissement PHP (warning) et non d'une erreur critique. Il apparaît principalement lorsque le mode développeur est activé. En production, ce message est masqué. Cependant, il signale souvent un problème sous-jacent dans vos templates qu'il est préférable de corriger plutôt que d'ignorer.",{"q":53,"a":54},"Comment vérifier si la description produit est bien enregistrée en base de données PrestaShop ?","Exécutez la requête SQL suivante dans phpMyAdmin ou en ligne de commande : SELECT id_product, id_lang, description_short, description FROM ps_product_lang WHERE id_product = VOTRE_ID. Si les champs sont vides, le problème vient de la sauvegarde et non du template. Vérifiez alors les overrides sur la classe Product.php et les hooks qui pourraient interférer.",{"q":56,"a":57},"Comment passer du mode debug au mode production dans PrestaShop 8 ?","Dans PrestaShop 8.x, modifiez le fichier .env à la racine du projet et assurez-vous que APP_DEBUG=0. Vous pouvez aussi passer par le back-office dans Paramètres avancés > Performances > Mode debug. N'oubliez pas de vider le cache après la modification. Le mode debug ne doit jamais être actif en production car il expose des informations sensibles et ralentit la boutique.","L'avertissement smarty_internal_templatebase.php sur les descriptions produit est généralement causé par des commentaires Smarty ({* *}) qui masquent le code d'affichage dans product.tpl, ou par un override de Product.php qui empêche la sauvegarde en base de données. Vérifiez votre template, supprimez les commentaires accidentels et adaptez la syntaxe selon votre version de PrestaShop.",4,"2026-03-21T14:17:19.000Z",[],"PrestaShop pour les développeurs",{"columns":64},[65,81,111,132],{"title":66,"links":67},"Plateforme",[68,72,75,78],{"label":69,"href":70,"external":71},"Offre Starter (2 500 €)","\u002Foffre-starter",false,{"label":73,"href":74,"external":71},"Devenir Ambassadeur","\u002Fambassadeur",{"label":76,"href":77,"external":71},"Modules PrestaShop","\u002Fmodules",{"label":79,"href":80,"external":20},"CodeMyShop.com","https:\u002F\u002Fcodemyshop.com",{"title":82,"links":83},"Le Synedre",[84,87,90,93,96,99,102,105,108],{"label":85,"href":86,"external":71},"L'histoire","\u002Fsynedre",{"label":88,"href":89,"external":71},"Constitution","\u002Fsynedre\u002Fconstitution",{"label":91,"href":92,"external":71},"L'équipe","\u002Fequipe",{"label":94,"href":95,"external":71},"Le réacteur en direct","\u002Freacteur",{"label":97,"href":98,"external":71},"Le Drill (entraînement)","\u002Fdrill",{"label":100,"href":101,"external":71},"Protocole de réunion","\u002Fsynedre\u002Freunion",{"label":103,"href":104,"external":71},"Les agents IA","\u002Fagents-ia",{"label":106,"href":107,"external":71},"La Conduite","\u002Fsynedre\u002Fconduite",{"label":109,"href":110,"external":71},"Charte plateforme","\u002Fsynedre\u002Fcharte",{"title":112,"links":113},"Ressources",[114,117,120,123,126,129],{"label":115,"href":116,"external":71},"Blog","\u002Fblog",{"label":118,"href":119,"external":71},"Academy","\u002Facademy",{"label":121,"href":122,"external":71},"Dictionnaire","\u002Fdictionnaire",{"label":124,"href":125,"external":71},"Expertise PrestaShop","\u002Fexpertise",{"label":127,"href":128,"external":71},"Flywheel","\u002Fflywheel",{"label":130,"href":131,"external":71},"Manifeste","\u002Fmanifeste",{"title":133,"links":134},"À propos",[135,138,141],{"label":136,"href":137,"external":71},"Alexandre Carette","\u002Fa-propos",{"label":139,"href":140,"external":71},"Dossier de presse","\u002Fpresse",{"label":142,"href":143,"external":71},"Contact","\u002Fcontact",{"items":145},[146,155,161,167,175,182,188,194],{"id":147,"type":148,"label":149,"href":125,"icon":151,"description":151,"badge":151,"groupTitle":151,"style":151,"gridColumns":151,"cssClass":151,"psCategoryId":151,"showPsChildren":71,"position":152,"children":153,"psChildren":154},41,"link",{"fr":150},"Expertise",null,0,[],[],{"id":156,"type":148,"label":157,"href":116,"icon":151,"description":151,"badge":151,"groupTitle":151,"style":151,"gridColumns":151,"cssClass":151,"psCategoryId":151,"showPsChildren":71,"position":158,"children":159,"psChildren":160},42,{"fr":115},1,[],[],{"id":162,"type":148,"label":163,"href":77,"icon":151,"description":151,"badge":151,"groupTitle":151,"style":151,"gridColumns":151,"cssClass":151,"psCategoryId":151,"showPsChildren":71,"position":164,"children":165,"psChildren":166},43,{"fr":76},2,[],[],{"id":168,"type":148,"label":169,"href":171,"icon":151,"description":151,"badge":151,"groupTitle":151,"style":151,"gridColumns":151,"cssClass":151,"psCategoryId":151,"showPsChildren":71,"position":172,"children":173,"psChildren":174},44,{"fr":170},"Outils IA","\u002Foutils-ia",3,[],[],{"id":176,"type":148,"label":177,"href":70,"icon":151,"description":151,"badge":151,"groupTitle":151,"style":179,"gridColumns":151,"cssClass":151,"psCategoryId":151,"showPsChildren":71,"position":59,"children":180,"psChildren":181},45,{"fr":178},"Offre Starter ✨",{"highlight":20},[],[],{"id":183,"type":148,"label":184,"href":119,"icon":151,"description":151,"badge":151,"groupTitle":151,"style":151,"gridColumns":151,"cssClass":151,"psCategoryId":151,"showPsChildren":71,"position":185,"children":186,"psChildren":187},46,{"fr":118},5,[],[],{"id":189,"type":148,"label":190,"href":137,"icon":151,"description":151,"badge":151,"groupTitle":151,"style":151,"gridColumns":151,"cssClass":151,"psCategoryId":151,"showPsChildren":71,"position":191,"children":192,"psChildren":193},47,{"fr":133},6,[],[],{"id":195,"type":148,"label":196,"href":143,"icon":151,"description":151,"badge":151,"groupTitle":151,"style":151,"gridColumns":151,"cssClass":151,"psCategoryId":151,"showPsChildren":71,"position":197,"children":198,"psChildren":199},48,{"fr":142},7,[],[],{"academy":201,"blog":202,"expertise":213},[],[203,207,210],{"title":204,"url":205,"score":158,"type":206},"PrestaShop headless avec Nuxt 3 : pourquoi séparer back et front","\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fprestashop-headless-nuxt-separation-front-back","blog",{"title":208,"url":209,"score":158,"type":206},"PrestaShop headless : Nuxt 3, pas Next.js — le choix souverain","\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fprestashop-headless-nuxt-nextjs-souverainete",{"title":211,"url":212,"score":158,"type":206},"Sylius rachète PrestaShop : ce que ça change pour vous","\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fsylius-rachat-prestashop-headless-souverainete",[],{"header":215},{"logo":216,"topBar":221,"contactEmail":224,"features":225,"navBar":151},{"src":217,"alt":218,"text":136,"href":219,"class":220},"\u002Flogo-ac.svg","Alexandre Carette — Architecte E-commerce Souverain","\u002F","h-10 w-10",{"message":151,"showLanguages":71,"align":222,"languages":223},"left",[],"contact@alexandrecarette.fr",{"showSearch":71,"showWishlist":71,"showLogin":20,"showContact":71,"showCart":71,"stickyHeader":20,"headerLayout":226},"inline",{"footer":228},{"theme":229,"description":151,"hours":151,"logo":230,"contact":231,"social":232,"bottomBar":242},"dark",{"src":217,"href":219,"alt":136},{"email":151,"phone":151,"address":151,"cta":151},[233,236,239],{"platform":234,"href":235,"label":234},"linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Falexandre-carette\u002F",{"platform":237,"href":238,"label":237},"malt","https:\u002F\u002Fwww.malt.fr\u002Fprofile\u002Falexandrecarette",{"platform":240,"href":241,"label":240},"github","https:\u002F\u002Fgithub.com\u002Fprest4cafe",{"copyright":151}]