insert (einfügen)
{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.
Beispiel 7-13. 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.