Eigene Smarty Modifier

Wer in PHP Projekte realisiert und dabei auf die Template-Engine Smarty.net zurückgreift kann sich freuen. Was in der Programmierung unter wiederverwendbare Funktionen/Methoden bekannt ist kann auch in mit der Template-Engine Smarty verwendet werden. Das Ganze nennt sich “Modifier“. Im Grunde ist ein Modifier auch eine Funktion, die immer aufgerufen wird, wenn man diese im Template angibt. Von kleinen Dingen bis hin zu komplexen Aufgaben können so Aktionen durchgeführt werden.

Zwei kleine Beispiele möchte ich euch einmal vorstellen. Sie sind einfach gehalten und es macht nicht unbedingt Sinn sie in realen Projekten zu verwenden, jedoch möchte ich euch anhand dieser Beispiele nur zeigen wie das ganze funktioniert.

Lädt man sich Smarty.net herunter und entpackt es gibt es innerhalb des libs Verzeichnisses einen Ordner namens “plugins“. Hier findet man einige Dateien die mit folgenden Namen beginnen:

  • block.
  • function.
  • modifier.
  • modifiercompiler.
  • weitere

Beispiel 1: Hash-Funktion

Wir nehmen einmal an, wir wollen innerhalb des Templates aus einer Smarty-Variable oder einem Text den MD5 Hash anzeigen lassen. Unsere Datei im Plugin Verzeichnis sähe so aus:

Unser Aufruf im Template sähe so aus:

Dann sähe unsere Ausgabe wie folgt aus:

Das “test” könnte man durch eine Smarty-Variable, z.B. $test ersetzen.

Beispiel 2: mailto-Objekt

Unsere Modifier sähe so aus:

Folgendes würde im Template stehen:

So sähe das Resultat aus:

Der Link ist im Bild zwar nicht ersichtlich wäre aber die entsprechende Mail-Adresse. Somit sind die Modifier eine schöne Möglichkeit komplexere Aufgaben mit nur einem Aufruf und gegebenenfalls. zusätzlichen Parametern zu realisieren.

Zugewiesene PHP Variablen mit Smarty parsen

Wer in PHP mit Smarty arbeitet, die oft als Template-Engine bezeichnet wird, der wird eventuell auch schon einmal in dieser Situation gewesen sein. Man möchte eine an Smarty zugewiesene Variable parsen, denn dort befinden sich Smarty-Variablen. Dies ist zum Beispiel der Fall, wenn ich Texte direkt aus der Datenbank ziehe.

Ein einfaches Beispiel:

Unser Template:

Die Ausgabe: Willkommen auf {$SITE_TITLE}.

Damit wir nun unser gewünschtes Ergebnis bekommen verwenden wir die eval Funktion (bitte mit Bedacht verwenden!). Unser Template bekommt eine kleine Änderung und sieht dann wie folgt aus:

Die Ausgabe: Willkommen auf SmattyCore.de