Twig y Smarty en PrestaShop: qué se usa dónde y cómo personalizar sin romper
El front sigue en Smarty y el back office va en Twig. Te explicamos cómo personalizar cada uno y dónde poner tus cambios para que sobrevivan a las actualizaciones.
PrestaShop usa dos motores de plantillas: Smarty para la tienda (front) y Twig para las pantallas modernas del back office. Saber cuál toca en cada caso evita muchas horas de buscar dónde está un texto.
El front: Smarty y el tema
Todo lo que ve el cliente sale de las plantillas .tpl del tema activo. Un tema hijo solo necesita incluir las plantillas que cambia: el resto las hereda del tema padre.
Sobrescribir la plantilla de un módulo
No edites los ficheros dentro de modules/: la próxima actualización del módulo los pisará. Copia la plantilla a tu tema respetando la ruta:
modules/ps_shoppingcart/ps_shoppingcart.tpl
→ themes/mitema/modules/ps_shoppingcart/ps_shoppingcart.tpl
PrestaShop buscará primero en el tema. Eso sí: si el módulo cambia sus variables en una versión nueva, tu copia puede quedarse desfasada. Revisa las plantillas sobrescritas en cada actualización.
El back office: Twig
Las pantallas de Symfony se pintan con Twig. Los módulos pueden añadir contenido en los hooks del back office o tener sus propias plantillas Twig bajo @Modules/mimodulo/.... Sobrescribir plantillas Twig del núcleo es posible pero delicado; siempre que puedas, usa hooks.
Escapado: la parte que no se puede olvidar
- En Smarty, escapa todo lo que venga de datos:
{$nombre|escape:'html':'UTF-8'}. Solo usanofiltercon HTML que hayas generado tú y sepas seguro. - En Twig el escapado es automático;
|rawlo desactiva, úsalo con el mismo cuidado.
Caché de plantillas
Smarty compila las plantillas y, según la configuración, guarda el HTML de algunos bloques. Si cambias una plantilla y no ves el cambio, vacía la caché desde Rendimiento. En desarrollo, activa «Forzar compilación» para no tener que hacerlo cada vez, y desactívalo en producción: es mucho más lento.
Nuestro consejo
Pon todos los cambios visuales en un tema hijo y todos los cambios de comportamiento en un módulo. Así, actualizar el tema padre o PrestaShop es un trámite y no una operación de riesgo.