Get Smarty

Donate

Paypal

Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Advertisement

Block-Funktionen

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 &uuml;bersetzen
        return $translation;
    }
}
?>

     

Comments
No comments for this page.

Advertisement

Sponsors [info]

Sponsors