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.

product.tpl
{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.
Importante

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.