Smarty en PrestaShop 1.6 y 1.7: patrones que sobrevivieron
Condiciones, bucles, traducciones y variables encontradas en plantillas reales de PrestaShop 1.6 y 1.7, con límites de compatibilidad.
- Revisado
- Compatibilidad
- PrestaShop 1.6.x y 1.7.x; no intercambiable sin adaptación
- Lectura
- 2 min
- Autor
- Gabriel — infinit8
Las plantillas guardadas muestran el cambio desde variables de 1.6 como $page_name o $lang_iso hacia estructuras de 1.7 como $page.page_name, $urls y dominios de traducción. La sintaxis Smarty se parece, pero el contrato de datos no es el mismo.
Condiciones y datos opcionales
Comprobar primero que el dato existe evita avisos y documenta que el bloque es opcional. Escapar la salida sigue siendo imprescindible cuando contiene texto.
{if isset($features) && $features}
{foreach from=$features item=feature}
{if $feature.id_feature == 4}
<dt>{l s='Frame style'}</dt>
<dd>{$feature.value|escape:'html':'UTF-8'}</dd>
{/if}
{/foreach}
{/if}
El salto de 1.6 a 1.7
- No des por hecho que una variable de 1.6 existe en 1.7.
- Los templates de 1.7 se organizan bajo
themes/TEMA/templates/. - Las inclusiones de módulos pueden usar la notación
module:NOMBRE/.... - Los temas hijo de 1.7 reducen copias completas y hacen más visible qué se sobrescribe.
Copiar un TPL completo desde el tema padre congela mucho código. Si la versión permite herencia, sobrescribe el bloque mínimo y registra qué plantilla original corresponde a cada versión.
PHP dentro de la plantilla era una señal de deuda
Una nota de 2018 proponía redirigir desde el TPL a un archivo PHP. El problema que intentaba resolver era real, pero la solución mantenible es preparar los datos en un módulo o controlador y asignarlos a Smarty; la vista debe representar, no abrir una segunda aplicación.
Localizar la plantilla correcta
Antes de editar, activa herramientas de desarrollo en un entorno cerrado, identifica el archivo que genera el bloque y limpia solo la caché necesaria. En 1.7, SmartyDev puede anotar en el HTML las rutas de las plantillas.
Preguntas frecuentes
¿Un TPL de PrestaShop 1.6 funciona en 1.7?
No necesariamente. Deben revisarse variables, rutas, módulos, traducciones y marcado del tema.
¿Es mejor copiar el tema y cambiarle el nombre?
Era una práctica frecuente, pero aumenta la superficie de mantenimiento. En 1.7 conviene valorar un tema hijo y sobrescrituras pequeñas.
Referencias y revisión
Contenido contrastado con documentación oficial. Comprueba siempre el comportamiento en un entorno de pruebas antes de desplegar cambios.