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

Fonctions de blocs

void smarty_block_name( $params,  
  $content,  
  &$smarty);  
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}.

  • 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. 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é {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.

Example 16.5. 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, &$repeat)
{
   // n'affiche que lors de la balise fermante
   if(!$repeat){
      if (isset($content)) {
         $lang = $params['lang'];
         // effectuer une bonne traduction ici avec $content
         return $translation;
      }
   }
}
?>

  

Voir aussi : register_block() et unregister_block().

Comments
No comments for this page.

Advertisement

Sponsors [info]

Sponsors