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:
void smarty_function_name( |
$params, | |
$content, | ||
&$smarty, | ||
&$repeat) ; |
array $params
;mixed $content
;object &$smarty
;boolean &$repeat
;Block-Funktionen sind Funktionen, die in der Form {func} .. {/func} notiert werden. Mit anderen Worten umschliessen sie einen Template-Abschnitt und arbeiten danach auf dessen Inhalt. Eine Block-Funktion {func} .. {/func} kann nicht mir einer gleichnamigen Template-Funktion {func} überschrieben werden.
Ihre Funktions-Implementation wird von Smarty zweimal
aufgerufen: einmal für das öffnende und einmal
für das schliessende Tag. (konsultieren Sie den Abschnitt zu &$repeat
um zu erfahren wie Sie dies ändern können.)
Nur das Öffnungs-Tag kann Attribute enthalten. Alle so übergebenen Attribute
werden als assoziatives Array $params
der Template-Funktion
übergeben. Sie können auf die Werte entweder direkt mit $params['start']
zugreifen oder sie mit extract($params)
in die Symbol-Tabelle
importieren. Die Attribute aus dem Öffnungs-Tag stehen auch beim Aufruf für das
schliessende Tag zur Verfügung.
Der Inhalt der $content
Variable hängt davon
ab, ob die Funktion für das öffnende Tag oder für das schliessende
Tag aufgerufen wird. Für das öffnende Tag ist der Wert null
,
für das schliessende Tag ist es der Inhalt des Template-Abschnitts.
Achtung: Der Template-Abschnitt den Sie erhalten, wurde bereits von
Smarty bearbeitet. Sie erhalten also die Template-Ausgabe, nicht den Template-Quelltext.
Der Parameter &$repeat
wird als Referenz übergeben und
kontrolliert wie oft ein Block dargestellt werden soll. Standardwert von $repeat
ist beim ersten Aufruf (für das öffnende Tag) true
, danach immer
false
.
Jedes Mal wenn eine Funktion für &$repeat
TRUE zurück gibt,
wird der Inhalt zwischen {func} .. {/func} erneut mit dem veränderten
Inhalt als $content
Parameter aufgerufen.
Wenn Sie verschachtelte Block-Funktionen haben, können Sie
die Eltern-Block-Funktion mit der $smarty->_tag_stack
Variable
herausfinden. Lassen Sie sich ihren Inhalt mit 'var_dump()' ausgeben.
Die Struktur sollte selbsterklärend sein.
Sehen Sie dazu: register_block(), unregister_block().
Example 16.5. Block-Funktionen
<?php /* * Smarty plugin * ------------------------------------------------------------- * File: block.translate.php * Type: block * Name: translate * Purpose: translate a block of text * ------------------------------------------------------------- */ function smarty_block_translate($params, $content, &$smarty, &$repeat) { if (isset($content)) { $lang = $params['lang']; // den $content irgendwie intelligent übersetzen return $translation; } } ?>