Twig und Smarty in PrestaShop: was wo verwendet wird und wie Sie anpassen, ohne etwas kaputtzumachen
Das Frontend läuft weiter mit Smarty, das Back Office mit Twig. Wir erklären, wie Sie beides anpassen und wo Ihre Änderungen hingehören, damit sie Updates überstehen.
PrestaShop verwendet zwei Template-Engines: Smarty für den Shop (Frontend) und Twig für die modernen Seiten des Back Office. Zu wissen, welche jeweils zuständig ist, erspart viele Stunden Suche nach der Stelle, an der ein Text steht.
Das Frontend: Smarty und das Theme
Alles, was der Kunde sieht, kommt aus den .tpl-Templates des aktiven Themes. Ein Child-Theme muss nur die Templates enthalten, die es ändert: Den Rest erbt es vom Parent-Theme.
Das Template eines Moduls überschreiben
Bearbeiten Sie nicht die Dateien in modules/: Das nächste Update des Moduls überschreibt sie. Kopieren Sie das Template unter Beibehaltung des Pfads in Ihr Theme:
modules/ps_shoppingcart/ps_shoppingcart.tpl
→ themes/mitema/modules/ps_shoppingcart/ps_shoppingcart.tpl
PrestaShop sucht zuerst im Theme. Allerdings: Wenn das Modul in einer neuen Version seine Variablen ändert, kann Ihre Kopie veralten. Prüfen Sie die überschriebenen Templates bei jedem Update.
Das Back Office: Twig
Die Symfony-Seiten werden mit Twig gerendert. Module können Inhalte in die Hooks des Back Office einfügen oder eigene Twig-Templates unter @Modules/mimodulo/... haben. Twig-Templates des Kerns zu überschreiben ist möglich, aber heikel; nutzen Sie, wann immer es geht, Hooks.
Escaping: der Teil, den man nicht vergessen darf
- Escapen Sie in Smarty alles, was aus Daten stammt:
{$nombre|escape:'html':'UTF-8'}. Verwenden Sienofilternur bei HTML, das Sie selbst erzeugt haben und das sicher ist. - In Twig erfolgt das Escaping automatisch;
|rawschaltet es ab, gehen Sie damit genauso vorsichtig um.
Template-Cache
Smarty kompiliert die Templates und speichert je nach Einstellung das HTML einiger Blöcke. Wenn Sie ein Template ändern und die Änderung nicht sehen, leeren Sie den Cache unter Leistung. In der Entwicklung aktivieren Sie „Kompilierung erzwingen“, damit Sie das nicht jedes Mal tun müssen, und schalten es in der Produktion ab: Es ist deutlich langsamer.
Unser Rat
Legen Sie alle optischen Änderungen in ein Child-Theme und alle Verhaltensänderungen in ein Modul. So wird ein Update des Parent-Themes oder von PrestaShop zur Formsache und nicht zu einem riskanten Eingriff.