Eigene Smarty-Funktionen erstellen
Gelegentlich werden in Templates eigene Smarty-Funktionen benötigt, die in der gewünschten Form nicht verfügbar sind.
Eigene Smarty-Funktionen können Verzeichnis /site/IhrMandant/plugins/smarty/ jeweils als function.meineFunktion.php definiert werden (wobei meineFunktion für den Namen der Funktion steht).
Beispiel 1
QuelltextPHP Code:
- // benötigtes Skript einbinden
- require_once('smarty/plugins/arg_smarty_functions.php');
- // neue Funktion definieren
- function smarty_function_meineFunktion($params, &$smarty)
- {
- if(!$param['timestamp']) // wenn der Parameter 'timestamp' nicht gesetzt wurde
- {
- }
- // am Ende des Skripts wird an die var-Variable das Ergebnis übergeben
- $smarty->assign($params['var'], $result');
- }
Alle an die Smarty-Funktion übergebenen Parameter können innerhalb der Funktion über das Array $param verwenden werden. Die Beispiel-Funktion gibt ein formatiertes Datum aus. Als Parameter kann ein gewünschter Unix-Zeitstempel angegeben werden.
QuelltextSmarty Code:
- {* Aufruf der Funktion *}
- {meineFunktion timestamp=1261132764 var="datum_formatiert"}
- {* Verwenden des Ergebnisses *}
- Die Funktion gab als Ergebnis das Datum {$datum_formatiert} zurück.
Beispiel 2
QuelltextPHP Code:
- /**
- * Smarty Plugin für Ausgabe von News-Einträgen
- *
- * Datei: site/Mandant/plugins/smarty/function.get_news.php
- *
- * Gibt alle Unterseite vom Typ "news/entry" aus.
- * Beispiel: {get_news var=VARNAME page=PAGE-Object anzahl=ANZAHL}
- */
- require_once('smarty/plugins/arg_smarty_functions.php');
- function smarty_function_get_news($params, &$smarty)
- {
- // Ist Anzahl angegeben?
- $params['anzahl'] ? $params['anzahl'] : 10; // Standard = 10
- // Kinder-Seiten auslesen
- // Ergebnis an entsprechende Var-Variable übergeben
- $smarty->assign($params['var'], $kinder);
- }
QuelltextSmarty Code:
- {* Funktionsaufruf im Template *}
- {get_news page=$page anzahl=5 var="news_eintraege"}
- {* Ausgabe der News *}
- {$news->field.name} <br />
- Leider existieren zur Zeit keine News
- {/foreach}