Smarty

From s23
Jump to navigation Jump to search

Smarty ist eine recht weit verbreitete und dadurch ziemlich ausgereifte open source template engine für PHP.

"One of Smartys primary design goals is to facilitate the separation of application code from presentation. Typically, the application code is maintained by programmers. The presentation templates are maintained by template designers."


Man setzt also im PHP-Quellcode nur noch Werte, die der Designer dann später leicht nutzen kann. Damit wird die Trennung von Code und Layout/Ausgabe ermöglicht.

Beispiele[edit]

$Smarty->assign("varnamefuertemplate", $phpvariable);

(wobei $phpvariable auch zB ein array sein kann).
In den templates (extra files, die auf .tpl enden und hauptsächlich reinen HTML-Code enthalten) kann man dann z.b. schreiben:

"Hallo {$name}, du bist eingelogt"

oder Listen machen mit:

 <table><tr><td>nr</td><td>name</td></tr> {foreach item=foo 
from=$varnamefuertemplate}<tr><td>{$foo.id}</td><td>{$foo.name}</td></tr>{/foreach}</table>


Auch unterstützt Smarty den Designer, indem es 'includes' ermöglicht. So braucht man nicht immer den gesamten Quellcode in eine Datei packen, sondern in der .tpl-Datei, die dann am Ende des php-codes "aktiviert" wird, steht oben {include file="kopf.tpl"} und unten analog fuss.tpl und ggf. auch

{include file="menu.tpl" aktiv="seite23"}

Im template menu.tpl kann dann beispielsweise mit

{if aktiv=="SeiteX"}<div=highlight>{/if}

oder so der entsprechende Eintrag hervorgehoben werden.


Sehr nett sind auch so Sachen wie

<a href="/foo/bar/user_{$name|urlencode}>{$name}</a>

Da kann man dann auch leicht eigene Sachen implementieren, die anderes als |urlencode machen.

Aber es gibt auch schon x andere, wie z.B. |truncate mit x Parametern, um lange Texte im preview zu kürzen und "..." hinten dran zu hängen oder |default="foo", um z.B. in Formularen leicht default-Werte für noch nicht ausgefüllte Felder zu machen.



links[edit]

Template loop detected: Template:Stub