Zwischen den Jahren konnte ich etwas Zeit erübrigen und in den ModuleStudio Generator investieren, um eine größere Umstellung durchzuführen: bei Anwendungen für Zikula 1.4.x wird nun Twig an Stelle von Smarty verwendet. Anwendungen für 1.3.x verwenden weiter Smarty wie bisher.
Im Wesentlichen lief die Umstellung ziemlich geradlinig, da die meisten Konzepte aus Smarty analog auch mit Twig implementiert werden können.
Eine Besonderheit betrifft die Behandlung von Assets, also CSS-, JS- und Bilddateien: statt direkt die Asset-Komponente von Symfony zu verwenden, wird in Zikula eine darauf aufbauende zasset-Funktion eingesetzt, welche einige Besonderheiten des Zikula-Frameworks beachtet. Außerdem werden CSS- und JS-Dateien auf Grund der Modularität von Zikula-Systemen nicht einfach in einem Twig-Block eingebunden, sondern nach wie vor über PageVars zentral registriert. Beides zusammen sieht dann in etwa so aus:
{{ pageAddAsset('stylesheet', zasset('@MeinModul:css/style.css')) }}
{{ pageAddAsset('javascript', zasset('@MeinModul:js/SomeFunctions.js')) }}
Ein Beispiel findet sich in Christian’s Medienmodul. Hier wird als letzter Parameter noch eine Zahl zur Gewichtung mit angegeben, die Einfluß nimmt auf die Reihenfolge der letztendlich ausgegebenen script
-Tags.
Eigene Smarty-Plugins und -Modifier werden nun als Twig Extensions (Funktionen und Filter) generiert. Hierbei werden im Generator übergangsweise auch ein paar zusätzliche Extensions für Funktionen mit erzeugt, die es im Core als Smarty-Plugins gibt, für die aber noch kein Twig-Pendant existiert. Dazu zählen beispielsweise Erweiterungen für den Avatar eines Nutzers, die Verlinkung seines Benutzerprofils oder die Erzeugung und Integration von Thumbnails mittels der Imagine-Bibliothek.
Aktuell bereite ich den nächsten technologischen Meilenstein vor: nach Twig soll nun auch Symfony Forms endlich im Generator Verwendung finden. Das ist der letzte größere Brocken auf dem Weg zur 2.0-konformen Modulstruktur. Anschließend stehen “nur” noch Bugfixes und Detailverbesserungen an, so dass sich ModuleStudio 0.7 zumindest von Seiten des Generators aus der Fertigstellung nähert.