¿Qué es una Excepción de Smarty en PrestaShop y por qué ocurre?
El motor de plantillas Smarty es el encargado de compilar y mostrar las vistas en tu tienda PrestaShop. Cuando se produce una excepción de Smarty, por lo general verás una pantalla de error con un mensaje críptico en lugar de tu tienda o panel de administración. Esto suele suceder debido a errores de sintaxis en los archivos .tpl modificados, problemas de caché corrupta o incompatibilidades tras actualizar un módulo o tema.
Causas principales de las excepciones de Smarty
- Modificaciones recientes en archivos de plantilla (.tpl) con etiquetas mal cerradas o variables inexistentes.
- Archivos de caché de Smarty dañados dentro del servidor.
- Falta de permisos de escritura en la carpeta
var/cacheocache/smarty. - Conflictos entre la versión de PHP del servidor y la sintaxis de la plantilla.
Método 1: Limpiar y vaciar la caché de Smarty manualmente
A menudo, la solución más rápida y efectiva es eliminar los archivos compilados de Smarty para forzar a PrestaShop a regenerarlos desde cero.
- Accede al panel de administración de tu hosting (cPanel, Plesk) o mediante cliente FTP (FileZilla).
- Navega hasta la raíz de instalación de tu tienda PrestaShop.
- Entra en la carpeta
var/cache/(en versiones recientes de PrestaShop 1.7 y 8.x) ocache/smarty/(en versiones 1.6). - Elimina el contenido de las carpetas
prodydev(o borra todo el contenido dentro de smarty/compile y smarty/cache). - Vuelve a cargar tu sitio web para comprobar si el error ha desaparecido.
Método 2: Desactivar la caché y activar el modo debug
Si el error persiste, necesitas saber exactamente qué archivo está provocando la excepción. Para ello, activarás el modo debug y desactivarás temporalmente la caché desde la base de datos o por código.
- Si tienes acceso al Back Office, ve a Parámetros avanzados > Rendimiento y en la sección de Smarty selecciona Forzar compilación y desactiva la caché.
- Si no tienes acceso al panel de administración, edita el archivo
config/defines.inc.php(en PrestaShop 1.6) osrc/PrestaShopBundle/Controller/Admin/Configure/AdvancedParameters/PerformanceController.php/config/config.inc.phpsegún tu versión, y cambia el valor de define('_PS_MODE_DEV_', false); atrue. - Visita nuevamente tu tienda y lee con atención el mensaje de la excepción de Smarty, el cual te indicará la ruta exacta del archivo
.tplque contiene el error. - Corrige la sintaxis defectuosa en el archivo indicado (por ejemplo, asegurándote de cerrar correctamente las llaves
{block}o{foreach}).