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

// 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    {        $param['timestamp'] = time(); // die aktuelle Zeit verwenden    }    $result = date("d.m.Y",$param['timestamp']);    // 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.

{* 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

/** * 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    $kinder = $params['page']->getChildren(array('where' => "type='news/entry'",array('limit' => $params['anzahl'])));        // Ergebnis an entsprechende Var-Variable übergeben    $smarty->assign($params['var'], $kinder); }
{* Funktionsaufruf im Template *} {get_news page=$page anzahl=5 var="news_eintraege"} {* Ausgabe der News *} {foreach from=$news_eintraege item="news"}    {$news->field.name} <br /> {foreachelse}   Leider existieren zur Zeit keine News {/foreach}