Tips & Tricks Handhabung unangewiesener Variablen Manchmal möchten Sie vielleicht, dass anstatt einer Leerstelle ein Standardwert ausgegeben wird - zum Beispiel um im Tabellenhintergrund " " auszugeben, damit er korrekt angezeigt wird. Damit dafür keine {if} Anweisung verwendet werden muss, gibt es in Smarty eine Abkürzung: die Verwendung des default Variablen-Modifikators. " " ausgeben wenn eine Variable nicht zugewiesen ist Siehe auch default (Standardwert) und Handhabung von Standardwerten. Handhabung von Standardwerten Wenn eine Variable in einem Template häufig zum Einsatz kommt, kann es ein bisschen störend wirken, den default-Modifikator jedes mal anzuwenden. Sie können dies umgehen, indem Sie der Variable mit der {assign} Funktion einen Standardwert zuweisen. Zuweisen des Standardwertes einer Variable Siehe auch default (Standardwert) und Handhabung nicht zugewiesener Variablen. Variablen an eingebundene Templates weitergeben Wenn die Mehrzahl Ihrer Templates den gleichen Header und Footer verwenden, lagert man diese meist in eigene Templates aus und bindet diese mit{include} ein. Was geschieht aber wenn der Header einen seitenspezifischen Titel haben soll? Smarty bietet die Möglichkeit, dem eingebundenen Template, Variablen als Attribute zu übergeben. Die Titel-Variable dem Header-Template zuweisen mainpage.tpl - Beim Aufbau der Hauptseite wird der Titel "Hauptseite" an header.tpl übergeben und dort verwendet. archives.tpl header.tpl - Zur Info: wenn kein $titel übergeben wurde wird hier mittels des default-Modifikator der Titel "Nachrichten" verwendet. {$title|default:"Nachrichten"} ]]> footer.tpl ]]> Zeitangaben Um dem Template Designer höchstmögliche Kontrolle über die Ausgabe von Zeitangaben/Daten zu ermöglichen, ist es empfehlenswert Daten immer als Timestamp zu übergeben. Der Designer kann danach die Funktion date_format für die Formatierung verwenden. Bemerkung: Seit Smarty 1.4.0 ist es möglich jede Timestamp zu übergeben, welche mit strtotime() ausgewertet werden kann. Dazu gehören Unix-Timestamps und MySQL-Timestamps. Die Verwendung von date_format AUSGABE: AUSGABE: Falls {html_select_date} in einem Template verwendet wird, hat der Programmierer die Möglichkeit den Wert wieder in ein Timestamp-Format zu ändern. Dies kann zum Beispiel wie folgt gemacht werden: Formular Datum-Elemente nach Timestamp konvertieren Siehe auch {html_select_date}, {html_select_time}, date_format und $smarty.now, WAP/WML WAP/WML Templates verlangen, dass ein Content-Type Header im Template angegeben wird. Der einfachste Weg um dies zu tun, wäre, eine Funktion zu schreiben, welche den Header ausgibt. Falls sie den Caching Mechanismus verwenden, sollten Sie auf das 'insert'-Tag zurückgreifen ('insert'-Tags werden nicht gecached), um ein optimales Ergebnis zu erzielen. Achten Sie darauf, dass vor der Ausgabe des Headers keine Daten an den Client gesendet werden, da die gesendeten Header-Daten ansonsten von Client verworfen werden. Die verwendung von 'insert' um einen WML Content-Type header zu senden ]]> Ihr Template muss danach wie folgt beginnen:

Welcome to WAP with Smarty! Willkommen bei WAP mit Smarty! OK klicken um weiterzugehen...

Einfach, oder?

]]>
Template/Script Komponenten Normalerweise werden Variablen dem Template wie folgt zugewiesen: In Ihrer PHP-Applikation werden die Variablen zusammengestellt (zum Beispiel mit Datenbankabfragen). Danach kreieren Sie eine Instanz von Smarty, weisen die Variablen mit assign() zu und geben das Template mit display() aus. Wenn wir also zum Beispiel einen Börsenticker in unserem Template haben, stellen wir die Kursinformationen in unserer Anwendung zusammen, weisen Sie dem Template zu und geben es aus. Wäre es jedoch nicht nett diesen Börsenticker einfach in ein Template einer anderen Applikation einbinden zu können ohne deren Programmcode zu ändern? Sie können PHP-Code mit {php}{/php} in Ihre Templates einbetten. So können Sie Templates erstellen, welche die Datenstrukturen zur Anweisung der eigenen Variablen enthalten. Durch die Bindung von Template und Logik entsteht so eine eigenständig lauffähige Komponente. Template/Script Komponenten function.load_ticker.php - Diese Datei gehört ins $plugins directory assign($params['assign'], $ticker_info); } ?> ]]> index.tpl Verschleierung von E-mail Adressen Haben Sie sich auch schon gewundert, wie Ihre E-mail Adresse auf so viele Spam-Mailinglisten kommt? Ein Weg, wie Spammer E-mail Adressen sammeln, ist über Webseiten. Um dieses Problem zu bekämpfen, können sie den 'mailto'-Plugin verwenden. Er ändert die Zeichenfolge mit Javascript so, dass sie im HTML Quellcode nicht lesbar ist, jedoch von jedem Browser wieder zusammengesetzt werden kann. Den {mailto}-Plugin gibt es im Smarty-Repository auf http://smarty.php.net. Laden sie den Plugin herunter und speichern Sie ihn im 'plugins' Verzeichnis. Beispiel von verschleierung von E-mail Adressen {* in index.tpl *} Anfragen bitte an {mailto address=$EmailAddress encode="javascript" subject="Hallo"} senden Technische Details Die Codierung mit Javascript ist nicht sehr sicher, da ein möglicher Spammer die Decodierung in sein Sammelprogramm einbauen könnte. Es wird jedoch damit gerechnet, dass, da Aufwand und Ertrag sich nicht decken, dies nicht oft der Fall ist. Siehe auch escape und {mailto}.