🐛 DebugIntermédiaire PS 1.6 PS 1.7 PS 8.x

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.

Publié le 21 mars 2026 4 min de lecture Alexandre Carette

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 modificateur nofilter est 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

  1. **Désactivez le mode debug en production** — les warnings Smarty ne doivent jamais être visibles par vos clients.
  2. **Utilisez un éditeur avec coloration Smarty** — les commentaires `{* *}` seront visuellement distincts du code actif, évitant les oublis.
  3. **Testez sur un environnement de préprod** — activez le mode debug uniquement sur une copie de votre boutique.
  4. **Versionnez vos templates** — un `git diff` révèle instantanément un commentaire ajouté par erreur.
  5. **Documentez vos overrides** — tout override de `Product.php` doit être commenté et justifié.
  6. Récapitulatif des variables Smarty description produit

    VariableVersionDescription `{$product->description_short}`1.6Description courte (syntaxe objet) `{$product->description}`1.6Description longue (syntaxe objet) `{$product.description_short}`1.7 / 8.xDescription courte (syntaxe tableau) `{$product.description}`1.7 / 8.xDescription longue (syntaxe tableau) `nofilter`1.7 / 8.xModificateur pour rendre le HTML brut
#smarty #description produit #template #product.tpl #erreur PHP #debug

Questions fréquentes

Tout ce que vous devez savoir sur ce sujet.

Un projet PrestaShop ?

Discutons-en directement.

★★★★★

193 projets livrés

Gratuit & sans engagement — réponse sous 24h

Alexandre Carette

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.