insert (einfügen)Attribut NameTypErforderlichStandardwertBeschreibungnamestringJan/aDer Name der Insert-FunktionassignstringNeinn/aName der Template-Variable, in der die Ausgabe der 'insert'-Funktion optional abgelegt wird.scriptstringNeinn/aName des PHP-Skriptes, das vor Aufruf der 'insert'-Funktion eingebunden werden soll.[var ...][var typ]Neinn/aVariablen die der 'insert'-Funktion übergeben werden sollen.
'insert'-Tags funktionieren ähnlich den 'include'-Tags,
werden aber nicht gecached, falls caching
eingeschaltet ist. Sie werden bei jedem Aufruf des Templates ausgeführt.
Stellen Sie sich vor, sie hätten ein Template mit einem
Werbebanner. Dieser Banner kann verschiedene Arten von
Inhalten haben: Bilder, HTML, Flash, etc.
Deshalb können wir nicht einfach einen statischen Link
verwenden und müssen vermeiden, dass dieser Inhalt gecached wird.
Hier kommt das 'insert'-Tag ins Spiel. Das Template kennt die Variablen
'#banner_location_id#' und '#site_id#' (zum Beispiel aus einer Konfigurationsdatei)
und soll eine Funktion aufrufen, die den Inhalt des Banners liefert.
Funktion 'insert'
{* erzeugen des Banners *}
{insert name="getBanner" lid=#banner_location_id# sid=#site_id#}
In diesem Beispiel verwenden wir die Funktion 'getBanner' und
übergeben die Parameter '#banner_location_id#' und '#site_id#'.
Smarty wird daraufhin in Ihrer Applikatiopn nach einer Funktion
namens 'getBanner' suchen und diese mit den Parametern '#banner_location_id#'
und '#site_id#' aufrufen. Allen 'insert'-Funktionen in Ihrer Applikation
muss 'insert_' vorangestellt werden, um Konflikte im Namensraum
zu vermeiden. Ihre 'insert_getBanner()'-Funktion sollte etwas mit den
übergebenen Parametern unternehmen und das Resultat zurückgeben.
Dieses Resultat wird an der Stelle des 'insert'-Tags in Ihrem Template ausgegeben.
In diesem Beispiel würde Smarty folgende Funktion aufrufen:
insert_getBanner(array("lid" => "12345","sid" => "67890")) und die erhaltenen Resultate
an Stelle des 'insert'-Tags ausgeben.
Falls Sie das 'assign'-Attribut übergeben, wird die Ausgabe
des 'insert'-Tags in dieser Variablen abgelegt.
Bemerkung: dies ist nicht sinnvoll, wenn Caching eingeschaltet ist.
Falls Sie das 'script'-Attribut übergeben, wird das angegebene
PHP-Skript vor der Ausführung der 'insert'-Funktion eingebunden.
Dies ist nützlich, um die 'insert'-Funktion erst in diesem
Skript zu definieren.
Der Pfad kann absolut oder relativ zu '$trusted_dir' angegeben werden.
Wenn Sicherheit eingeschaltet ist, muss das Skript in '$trusted_dir'
liegen.
Als zweites Argument wird der 'insert'-Funktion das Smarty-Objekt selbst
übergeben. Damit kann dort auf die Informationen im Smarty-Objekt
zugegriffen werden.
Technische Bemerkung
Es gibt die Möglichkeit, Teile des Templates nicht zu cachen.
Wenn Sie caching eingeschaltet haben,
werden 'insert'-Tags nicht gecached. Sie werden jedesmal ausgeführt, wenn
die Seite erstellt wird - selbst innerhalb gecachter Seiten. Dies funktioniert
gut für Dinge wie Werbung (Banner), Abstimmungen, Wetterberichte, Such-Resultate, Benutzer-Feedback-Ecke, etc.