Twig e Smarty in PrestaShop: cosa si usa dove e come personalizzare senza rompere
Il front è ancora in Smarty e il back office è in Twig. Ti spieghiamo come personalizzare ciascuno e dove mettere le tue modifiche perché sopravvivano agli aggiornamenti.
PrestaShop usa due motori di template: Smarty per il negozio (front) e Twig per le schermate moderne del back office. Sapere quale tocca in ogni caso evita molte ore passate a cercare dove si trova un testo.
Il front: Smarty e il tema
Tutto ciò che vede il cliente esce dai template .tpl del tema attivo. Un tema figlio deve includere solo i template che modifica: il resto lo eredita dal tema padre.
Sovrascrivere il template di un modulo
Non modificare i file dentro modules/: il prossimo aggiornamento del modulo li sovrascriverà. Copia il template nel tuo tema rispettando il percorso:
modules/ps_shoppingcart/ps_shoppingcart.tpl
→ themes/mitema/modules/ps_shoppingcart/ps_shoppingcart.tpl
PrestaShop cercherà prima nel tema. Attenzione però: se il modulo cambia le sue variabili in una nuova versione, la tua copia può restare indietro. Controlla i template sovrascritti a ogni aggiornamento.
Il back office: Twig
Le schermate Symfony vengono disegnate con Twig. I moduli possono aggiungere contenuti negli hook del back office o avere i propri template Twig sotto @Modules/mimodulo/.... Sovrascrivere i template Twig del core è possibile ma delicato; quando puoi, usa gli hook.
Escaping: la parte da non dimenticare
- In Smarty, applica l'escaping a tutto ciò che proviene dai dati:
{$nombre|escape:'html':'UTF-8'}. Usanofiltersolo con HTML generato da te e di cui sei sicuro. - In Twig l'escaping è automatico;
|rawlo disattiva, usalo con la stessa attenzione.
Cache dei template
Smarty compila i template e, a seconda della configurazione, salva l'HTML di alcuni blocchi. Se modifichi un template e non vedi il cambiamento, svuota la cache da Prestazioni. In sviluppo, attiva «Forza la compilazione» per non doverlo fare ogni volta, e disattivala in produzione: è molto più lenta.
Il nostro consiglio
Metti tutte le modifiche visive in un tema figlio e tutte le modifiche di comportamento in un modulo. Così aggiornare il tema padre o PrestaShop è una formalità e non un'operazione rischiosa.