Fonctions de blocs void smarty_block_name array $params mixed $content object &$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}. 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. 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 contenues dans le tableau associatif $params. Vous pouvez accéder a ces valeurs soit directement, par exemple $params['start'], soit en utilisant extract($params) pour les importer dans la table des symboles. 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 a 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. Si vous imbriqué des fonctions de bloc, il est possible de connaetre la fonction de bloc parente grGce a la variable $smarty->_tag_stack. Faites un var_dump() dessus et la structure devrait apparaetre. Regardez aussi : register_block(), unregister_block(). fonction de bloc <?php /* * Smarty plugin * ------------------------------------------------------------- * Fichier : block.translate.php * Type : bloc * Nom : translate * Rôle : traduire un bloc de texte * ------------------------------------------------------------- */ function smarty_block_translate($params, $content, &$smarty) { if ($content) { $lang = $params['lang']; // fait une traduction de $content echo $translation; } }