Erreur Smarty description produit PrestaShop : diagnostic et correction
Résolvez l'erreur smarty_internal_templatebase.php sur la description produit PrestaShop. Diagnostic complet, code corrigé et bonnes pratiques Smarty.
En bref : 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.
Comprendre l'avertissement smarty_internal_templatebase.php sur les descriptions produit
Un avertissement PHP faisant référence à smarty_internal_templatebase.php 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 warning PHP (et non d'une erreur fatale) qui se manifeste uniquement lorsque le mode debug est activé.
Ce guide détaille les causes possibles et les solutions concrètes pour résoudre ce problème.
Pourquoi cet avertissement apparaît
Le mode développeur amplifie les alertes
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é :
PrestaShop 1.6 :
// config/defines.inc.php
define('_PS_MODE_DEV_', true); // true = mode debug actif
PrestaShop 1.7 / 8.x :
// .env ou app/config/parameters.php
// Vérifier que APP_DEBUG n'est pas à true en production
En production, ce paramètre doit toujours être sur false. L'avertissement disparaîtra, mais cela ne signifie pas que le problème sous-jacent est résolu — il est simplement masqué.
Les commentaires Smarty mal placés
La cause la plus fréquente de ce bug est une mauvaise utilisation des commentaires Smarty dans le template product.tpl. La syntaxe des commentaires dans Smarty est la suivante :
{* Ceci est un commentaire Smarty — tout le contenu entre ces balises est ignoré *}
Une erreur classique consiste à commenter involontairement le code d'affichage de la description :
{if $product->description_short}
{* <div id="short_description_content" class="rte align_justify" itemprop="description">
{$product->description_short}
</div> *}
{/if}
Dans cet exemple, le bloc {* ... *} neutralise entièrement l'affichage de la description courte. Le template évalue la condition (description_short existe), entre dans le bloc {if}, 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é.
La correction
Supprimez les balises de commentaire pour restaurer l'affichage :
{if $product->description_short}
<div id="short_description_content" class="rte align_justify" itemprop="description">
{$product->description_short}
</div>
{/if}
Afficher la description longue dans le template
Si vous souhaitez afficher la description longue du produit (au lieu ou en complément de la description courte), utilisez la variable Smarty correspondante :
PrestaShop 1.6 (fichier product.tpl) :
{if $product->description}
<div class="rte" itemprop="description">
{$product->description}
</div>
{/if}
PrestaShop 1.7 / 8.x (fichier product.tpl du thème) :
{if $product.description}
<div class="product-description" itemprop="description">
{$product.description nofilter}
</div>
{/if}
Attention au changement de syntaxe : en PrestaShop 1.7+, les variables produit utilisent la notation tableau (
$product.description) et non plus objet ($product->description). Le modificateurnofilterest nécessaire pour que le HTML de la description soit rendu correctement.
Quand la description ne s'enregistre pas en base de données
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.
Vérifier la présence en base de données
Interrogez directement la table ps_product_lang :
SELECT id_product, id_lang, description_short, description
FROM ps_product_lang
WHERE id_product = VOTRE_ID_PRODUIT;
Si les champs sont vides, le problème vient de la sauvegarde du produit.
Investiguer les overrides
Un override de la classe Product.php peut interférer avec la sauvegarde des descriptions. Vérifiez :
# PrestaShop 1.6
ls -la override/classes/Product.php
# PrestaShop 1.7 / 8.x
ls -la override/classes/Product.php
ls -la var/cache/*/class_index.php
Si un override existe, examinez s'il redéfinit la méthode add(), update() ou les définitions de champs dans $definition. Un champ description_short absent ou mal configuré dans l'override empêchera la sauvegarde.
Pour PrestaShop 8.x, pensez également à vérifier les éventuels décorateurs de service Symfony qui pourraient intercepter la logique de sauvegarde produit.
Régénérer le cache de classes
Après toute modification d'override :
# Supprimer le cache de l'index de classes
rm -f var/cache/prod/class_index.php
rm -f var/cache/dev/class_index.php
# Ou via le back-office : Paramètres avancés > Performances > Vider le cache
Bonnes pratiques pour éviter ce type de bug
- **Désactivez le mode debug en production** — les warnings Smarty ne doivent jamais être visibles par vos clients.
- **Utilisez un éditeur avec coloration Smarty** — les commentaires `{* *}` seront visuellement distincts du code actif, évitant les oublis.
- **Testez sur un environnement de préprod** — activez le mode debug uniquement sur une copie de votre boutique.
- **Versionnez vos templates** — un `git diff` révèle instantanément un commentaire ajouté par erreur.
- **Documentez vos overrides** — tout override de `Product.php` doit être commenté et justifié.
Récapitulatif des variables Smarty description produit
Questions fréquentes
Tout ce que vous devez savoir sur ce sujet.
Un projet PrestaShop ?
Discutons-en directement.
193 projets livrés
Lire sur le blog

Alexandre Carette
Expert PrestaShop & Architecture E-commerce
Développeur PrestaShop depuis 2014, 193 projets livrés. Je conçois des architectures headless Nuxt + PrestaShop et des outils d'automatisation IA pour les e-commerçants.