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_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; } } ?>