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

Funzioni sui blocchi

void smarty_block_name( $params,  
  $content,  
  &$smarty,  
  &$repeat);  
array $params;
mixed $content;
object &$smarty;
boolean &$repeat;
 

Le funzioni sui blocchi sono funzioni che appaiono nel template nella forma: {func} .. {/func}. In altre parole, racchiudono un blocco del template e lavorano sul contenuto di questo blocco. Le funzioni di blocco hanno la precedenza sulle funzioni personalizzate con lo stesso nome, il che significa che non potete avere una funzione personalizzata {func} ed allo stesso tempo una funzione di blocco {func} .. {/func}.

Per default la funzione di implementazione viene chiamata due volte da Smarty: una per il tag di apertura, e una per il tag di chiusura (guardate sotto &$repeat per capire come modificare questo comportamento).

Solo il tag di apertura della funzione di blocco può avere attributi. Tutti gli attributi passati dal template alle funzioni relative sono contenuti in $params nella forma di array associativo. Potete accedere a questi valori, ad esempio, con $params['start']. Gli attributi del tag di apertura sono accessibili alla funzione anche in fase di elaborazione del tag di chiusura.

Il valore di $content dipende se la funzione viene chiamata per il tag di apertura o per quello di chiusura. Nel caso del tag di apertura, sarà null, mentre nel caso del tag di chiusura sarà il contenuto del blocco di template. Notate che il blocco sarà già stato elaborato da Smarty, quindi ciò che riceverete sarà l'output del template, non il sorgente.

Il parametro &$repeat è passato alla funzione per riferimento e le fornisce la possibilità di controllare quante volte il blocco viene visualizzato. Per default $repeat è true alla prima chiamata della funzione (al tag di apertura), e false per tutte le chiamate successive (al tag di chiusura). Ogni volta che la funzione termina con il valore di &$repeat a true, il contenuto compreso fra {func} e {/func} viene valorizzato e la funzione viene chiamata di nuovo con il nuovo contenuto del blocco nel parametro $content.

Se avete funzioni di blocco nidificate, potete scoprire qual è il blocco genitore attraverso la variabile $smarty->_tag_stack. Fate un var_dump() su questa variabile e la struttura dovrebbe apparirvi evidente.

Vedere anche: register_block(), unregister_block().

Example 16.5. funzione di blocco


<?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'];
        // fate qui una traduzione intelligente di $content
        return $translation;
    }
}
?>

     

Comments
No comments for this page.

Advertisement

Sponsors [info]

Sponsors