Fonctions de blocsvoid smarty_block_namearray $paramsmixed $contentobject &$smarty
Les fonctions de blocs sont des fonctions de la forme {func} .. {/func}.
En d'autres mots, elles englobent des blocs de template et opèrent sur les
contenus de ces blocs. Les fonctions de blocs ont la priorité sur les
fonctions utilisateurs de même nom, ce qui signifie que vous ne
pouvez avoir une fonction utilisateur {func} et une fonction de bloc
{func} .. {/func}.
Par défaut, l'implémentation de votre fonction est appelée deux fois par Smarty :
une fois pour la balise ouvrante et une autre fois pour la balise
fermante (voir &$repeat ci-dessous
sur la façon de modifier ce comportement).
Seule la balise ouvrante d'une fonction de bloc peut avoir des attributs.
Tous les attributs passés par le template aux fonctions de templates sont
contenus dans le tableau associatif $params.
Vous pouvez accéder à ces valeurs directement par
$params['start'].
Votre fonction a aussi accès aux attributs de la balise
ouvrante quand c'est la balise fermante qui est exécutée.
La valeur de la variable $content est différente
selon si votre fonction est appelée pour la balise ouvrante ou la
balise fermante. Si c'est pour la balise ouvrante, elle sera à
null et si c'est la balise fermante, elle sera
égale au contenu du bloc de template. Notez que le bloc de template
aura déjà été exécuté par Smarty, vous recevrez donc la sortie du
template et non sa source.
Le paramètre &$repeat est passé
par référence à la fonction d'implémentation et fournit la possibilité
de contrôler le nombre d'affichage du bloc. Par défaut,
$repeat vaut true
lors du premier appel à la fonction de bloc (le bloc d'ouverture du tag) et
false lors de tous les autres appels à la fonction
de bloc (le bloc de fermeture du tag). Chaque fois que la fonction
d'implémentation retourne avec le paramètre
&$repeat vallant true, le contenu situé
entre {func} .. {/func} est évalué et la fonction d'implémentation est appelé
une nouvelle fois avec le nouveau bloc de contenu en tant que paramètre
$content.
Si vous imbriqué des fonctions de bloc, il est possible de connaître
la fonction de bloc parente grâce à la variable $smarty->_tag_stack.
Faîtes un var_dump() dessus et la structure devrait apparaître.
Regardez aussi :
register_block(),
unregister_block().
Fonction de bloc
]]>