Get Smarty

Donate

Donate Bitcoin Bitcoin
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

Largest classified with thousands of ads at Shoppok

Buy cheap eyeglasses from Cheapglasses123.com and save up to 80%.

Buy prescription glasses from www.australiaglasses.com and save.

Cheap Glasses Now On Sale at GlassesPeople.com. Starts At $7.95.

Where to buy discount wedding dresses and cheap smart dresses free shipping - Weddingdresstrend.com

Find Wedding Dresses Online at Canada from Ca-dresses.com

Find your local domestic cleaner

Brautkleider auf Topwedding.de

Find free files to download on allwhatyouwant.net

Looking For Affordable Wedding Dresses 2015 at Best Prices On TDBridal.com

Shop high quality cheap prom dresses on Dresswe.co.uk

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.
Post a Comment
All comments are moderated. Support questions are ignored, use the forums instead.
Author:
Email: (not shown)
What is 18 plus 20? (Are you human?)

Advertisement

Sponsors [info]

UK Web Hosting @webhost.uk.net
Best Web Hosting @rshosting.com
Web Hosting UK @webhostinguk.com
Unlimited Web Hosting @infrenion.com
App Entwicklung @morphodo.com
First Click Internet Marketing @fcinternetmarketing.com
Credit Card Processing Company