Smarty Syntax
Grundlegende Syntax
Die Smarty Template-Tags werden durch eine geschweifte Klammer {…} eingeleitet. Smarty kann in PrestaShop in allen Templates die mit der Endung .tpl enden verwendet werden.
Smarty Variablen
Templatevariablennamen beginnen mit einem $dollar-Zeichen. Die Namen derVariablen können Ziffern, Buchstaben und Unterstriche (‘_’) enthalten, sehr ähnlich den Variablen in PHP. Numerische Arrayindizes können referenziert werden und auch Nichtnumerische. Zugriff auf Objekteigenschaften und -methoden sind auch möglich. Konfigurationsvariablen und Superglobals (S_SERVER, $_GET, $_POST, $_REQUEST…) werden jedoch über die spezielle Variable {$smarty.config} referenziert.
Zugriff auf Variablen
{$foo}, Zeigt einfache Variable an (kein Array oder Objekt) {$foo[4]}, Zeigt 5. Element von einem Array an, deren Schlussel bei 0 beginnen {$foo.bar}, Zeigt das Element zum Schlüssel "bar" des Arrays an (wie PHPs $foo['bar']) {$foo.$bar}, Zeigt das Element eines variablen Schlüssels an (wie PHPs $foo[$bar])
Zugriff auf Globals und Konfigurationsvariablen
{#foo#}, Zeift die Konfigurationsvariable "foo" an {$smarty.config.foo}, Synonym für {#foo#} {$foo[bar]}, Syntax zum zugriff auf Element in einer Section-Schleife, siehe {section} {assign var=foo value="baa"}{$foo}, Gibt "baa" aus, siehe {assign}
Zugriff auf Arrays
{$foo.bar.baz} {$foo.$bar.$baz} {$foo[4].baz} {$foo[4].$baz} {$foo.bar.baz[4]}
Zugriff auf Objekte
{$foo->bar}, Zeigt eine Eigenschaft "bar" des Objekts $foo an {$foo->bar()}, Zeigt den Rückgabewert der Objectmethode "bar" an {$foo->bar($baz,2,$bar)}, Parameter übergeben
Templates inkludieren
Wenn wir teile unserer Smarty Templates trennen möchten um diese mehrfach in anderen Templates global zu verwenden können wir auf die {include …} Anweisung zurückgreifen. PrestaShop nutzt diesen Mechanismus z.B. für die header.tpl und footer.tpl, so werden Änderungen die in diesen Dateien durchgeführt automatisch von allen Templates die den header und footer includieren verwendet.
{include file="header.tpl"} Inhalt {include file="footer.tpl"}
{if},{elseif},{else} Abfragen
{if}-Statements in Smarty erlauben die selbe Flexibilität wie in PHP, bis auf ein paar Erweiterungen für die Template-Engine. Jedes {if} muss mit einem {/if} kombiniert sein. {else} und {elseif} sind ebenfalls erlaubt. Alle PHP Vergleichsoperatoren und Funktionen, wie ||, or, &&, and, is_array(), etc. sind erlaubt.
Wenn $security angeschaltet wurde, dann müssen alle verwendeten PHP-Funktionen im IF_FUNCS-Array in dem $security_settings-Array deklariert werden.
Hier eine Liste der erlaubten Operatoren. Bedingungsoperatoren müssen von umgebenden Elementen mit Leerzeichen abgetrennt werden. PHP-Äquivalente sind, sofern vorhanden, angeben.
{if $name eq "Chris"} Willkommen Chris, schön das du hier bist. {elseif $name eq "Madlen"} Willkommen Madlen, freut mich das du hier bist, hast du nicht etwas vergessen?. {else} Willkommen, wer auch immer du bist :-) {/if}
Ressourcen
Einen vollständige deutsche Dokumentation die detailliert den Umgang mit Smarty beschreibt finden wir auf den offizielen Seiten von Smarty:

