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:

<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * File:     modifier.hash.php
 * Type:     modifier
 * Name:     hash
 * Purpose:  Hashes the string
 * -------------------------------------------------------------
 */
function smarty_modifier_hash($string)
{
    return md5($string);
}

Unser Aufruf im Template sähe so aus:

Hallo, {"test"|hash}

Dann sähe unsere Ausgabe wie folgt aus:

Hallo, 098f6bcd4621d373cade4e832627b4f6

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

Beispiel 2: mailto-Objekt

Unser Modifier sähe so aus:

<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * File:     modifier.mail.php
 * Type:     modifier
 * Name:     mail
 * Purpose:  Transforms the string to a html mail element
 * -------------------------------------------------------------
 */
function smarty_modifier_mail($string, $displayText = '')
{
	$text = (!empty($displayText)) ? $displayText : $string;
    return '<a href="mailto:'.$string.'">'.$text.'</a>';
}

Folgendes würde im Template stehen:

Schreibe eine Mail an: {"matt@snakesoft.net"|mail:"matt AT snakesoft DOT net"}

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.

Schreibe einen Kommentar