Seid einigen Tagen befasse ich mich mit der Umstellung des pSys von Smarty 2 zu Smarty 3. Da die Klasse erweitert wurde um die Multilanguage Fähigkeit der Templates zu ermöglichen ist dies nicht ganz so einfach machbar, ein simples austauschen alleine reicht nicht aus. Mit der SmartyMLDB selbst habe ich aber noch garnicht angefangen denn es gibt doch einige Unterschiede zwischen Version 2 und 3 die es notwendig machen „alle“ Templates zu überarbeiten.

Syntax

In Smarty 2 war man recht frei bei Funktionen was das setzen von Leerzeichen angeht. Vorher funktionierte zum Beispiel noch:

{ if $addmeta ==  „“ }

Das führt nun zu einem Template Error, in Smarty 3 müssen die Leerzeichen verschwinden:

{if $addmeta == „“}

Das selbe muss eingehalten werden bei Kommentaren und allen anderen Funktionen.

php

php in Templates ist verbannt. Man könnte dies zwar reaktivieren durch Setzen von $smarty->$php_handling, doch gibt es auch andere Möglichkeiten. Im Fall von pSys geht es hier hauptsächlich um den FCKeditor welcher an dieser Stelle durch ein Stück php Code eingebunden wurde. Dies ist aber kein Problem, dafür lässt sich dann eine Plugin Funktion für Smarty selbst erstellen, damit wird das ganze doch noch ein Stück eleganter.

Filter

Filter werden nicht mehr über register_prefilter() oder register_postfilter() angemeldet, sonder nur noch mit der Funktion registerFilter(). Eine recht kleine Anpassung ist hier notwendig da dies ja eh meist zentral nur einmalig gemacht wird.

Hauptproblem

Das Hauptproblem bei der Umstellung im Moment ist die Umsetzung unserer Multi Language Extension, da diese ein Stück tiefer hineingeht in die Smarty Funktionen und die verschiedenen Language Pakete über Compile IDs steuert. Dies funktioniert bisher noch nicht wie gewünscht, manchmal bleiben Templates einfach leer ohne das eine Ausgabe erzeugt wird.