What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
{insert}-Tags funktionieren ähnlich den {include}-Tags, werden aber nicht gecached, falls caching eingeschaltet ist. Sie werden bei jedem Aufruf des Templates ausgeführt.
Attribut Name | Typ | Erforderlich | Standardwert | Beschreibung |
---|---|---|---|---|
name | string | Ja | n/a | Der Name der Insert-Funktion |
assign | string | Nein | n/a | Name der Template-Variable, in der die Ausgabe der 'insert'-Funktion optional abgelegt wird. |
script | string | Nein | n/a | Name des PHP-Skriptes, das vor Aufruf der 'insert'-Funktion eingebunden werden soll. |
[var ...] | [var typ] | Nein | n/a | Variablen die der 'insert'-Funktion übergeben werden sollen. |
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.
Example 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.
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.