Introducción a las excepciones de Smarty en PrestaShop
El motor de plantillas Smarty es una pieza fundamental en PrestaShop, ya que se encarga de compilar y mostrar las vistas de tu tienda online tanto en el frontoffice como en el backoffice. Sin embargo, cuando se produce una modificación en los archivos .tpl, hay un conflicto de sintaxis o la caché se corrompe, aparece la temida excepción de Smarty, bloqueando el sitio web y mostrando un mensaje de error crítico.
Causas principales del error de Smarty
- Errores de sintaxis en los archivos de plantilla (.tpl) del tema activo.
- Problemas de permisos en la carpeta de caché del servidor.
- Incompatibilidad de variables pasadas desde el controlador al archivo de la vista.
- Archivos compilados de Smarty dañados u obsoletos.
Método 1: Vaciar y regenerar la caché de PrestaShop manualmente
A menudo, las excepciones de Smarty se solucionan simplemente eliminando los archivos temporales de compilación. Sigue estos pasos para hacerlo vía FTP o SSH:
- Accede a los archivos de tu servidor utilizando un cliente FTP (como FileZilla) o el administrador de archivos de tu hosting.
- Navega hasta el directorio raíz de tu instalación de PrestaShop.
- Entra en la carpeta
var/cache/(en versiones antiguas de PrestaShop la ruta puede sercache/smarty/). - Elimina el contenido de las carpetas
prodydev(o borra todo el contenido dentro devar/cache/excepto el archivo index.php). - Recarga tu tienda web para forzar a PrestaShop a recompilar las plantillas limpias.
Método 2: Activar el modo debug para identificar la línea exacta del error
Para solucionar el problema de raíz, es necesario conocer exactamente qué archivo .tpl o línea de código está generando la excepción. Activa el modo de depuración:
- Accede por FTP y busca el archivo
defines.inc.phpubicado enconfig/o edita el archivoapp/config/parameters.phpdependiendo de tu versión. - Si modificas
defines.inc.php, cambia la siguiente línea de código:define('_PS_MODE_DEV_', false);adefine('_PS_MODE_DEV_', true);. - Si tu versión utiliza
parameters.php, busca la clavedebug_modey cámbiala atrue. - Vuelve a cargar la página del error en tu navegador; ahora verás un stack trace detallado que indica el archivo Smarty causante del fallo.
Método 3: Corregir el error de sintaxis en el archivo .tpl
Una vez identificado el archivo gracias al modo debug, edítalo para corregir el fallo de sintaxis en la etiqueta de Smarty:
- Abre el archivo afectado (por ejemplo,
themes/tu-tema/templates/catalog/_partials/product-prices.tpl). - Busca la variable o etiqueta mal cerrada, por ejemplo, asegúrate de que las llaves estén correctamente cerradas:
{if $variable} ... {/if}. - Guarda los cambios, vacía la caché nuevamente como se indicó en el Método 1 y verifica que el sitio web funcione con normalidad.