| 
									
										
										
										
											2004-04-13 11:47:32 +00:00
										 |  |  |  | <?xml version="1.0" encoding="iso-8859-1"?> | 
					
						
							|  |  |  |  | <!-- $Revision$ --> | 
					
						
							| 
									
										
										
										
											2004-12-26 20:05:31 +00:00
										 |  |  |  | <!-- EN-Revision: 1.3 Maintainer: yannick Status: ready --> | 
					
						
							|  |  |  |  | <sect1 id="plugins.block.functions"> | 
					
						
							|  |  |  |  |  <title>Fonctions de blocs</title> | 
					
						
							|  |  |  |  |  <funcsynopsis> | 
					
						
							|  |  |  |  |   <funcprototype> | 
					
						
							|  |  |  |  |    <funcdef>void <function>smarty_block_<replaceable>name</replaceable></function></funcdef> | 
					
						
							|  |  |  |  |    <paramdef>array <parameter>$params</parameter></paramdef> | 
					
						
							|  |  |  |  |    <paramdef>mixed <parameter>$content</parameter></paramdef> | 
					
						
							|  |  |  |  |    <paramdef>object <parameter>&$smarty</parameter></paramdef> | 
					
						
							|  |  |  |  |   </funcprototype> | 
					
						
							|  |  |  |  |  </funcsynopsis> | 
					
						
							|  |  |  |  |  <para> | 
					
						
							|  |  |  |  |   Les fonctions de blocs sont des fonctions de la forme {func} .. {/func}. | 
					
						
							|  |  |  |  |   En d'autres mots, elles englobent des blocs de template et op<6F>rent sur les | 
					
						
							|  |  |  |  |   contenus de ces blocs. Les fonctions de blocs ont la priorit<69> 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}. | 
					
						
							|  |  |  |  |  </para> | 
					
						
							|  |  |  |  |  <para> | 
					
						
							|  |  |  |  |   Par d<>faut, l'impl<70>mentation de votre fonction est appel<65>e deux fois par Smarty : | 
					
						
							|  |  |  |  |   une fois pour la balise ouvrante et une autre fois pour la balise | 
					
						
							|  |  |  |  |   fermante (voir <literal>&$repeat</literal> ci-dessous  | 
					
						
							|  |  |  |  |   sur la fa<66>on de modifier ce comportement). | 
					
						
							|  |  |  |  |  </para> | 
					
						
							|  |  |  |  |  <para> | 
					
						
							|  |  |  |  |   Seule la balise ouvrante d'une fonction de bloc peut avoir des attributs. | 
					
						
							|  |  |  |  |   Tous les attributs pass<73>s par le template aux fonctions de templates sont | 
					
						
							|  |  |  |  |   contenus dans le tableau associatif <parameter>$params</parameter>. | 
					
						
							|  |  |  |  |   Vous pouvez acc<63>der <20> ces valeurs directement par | 
					
						
							|  |  |  |  |   <varname>$params['start']</varname>. | 
					
						
							|  |  |  |  |   Votre fonction a aussi acc<63>s aux attributs de la balise | 
					
						
							|  |  |  |  |   ouvrante quand c'est la balise fermante qui est ex<65>cut<75>e. | 
					
						
							|  |  |  |  |  </para> | 
					
						
							|  |  |  |  |  <para> | 
					
						
							|  |  |  |  |   La valeur de la variable <parameter>$content</parameter> est diff<66>rente | 
					
						
							|  |  |  |  |   selon si votre fonction est appel<65>e pour la balise ouvrante ou la | 
					
						
							|  |  |  |  |   balise fermante. Si c'est pour la balise ouvrante, elle sera <20> | 
					
						
							|  |  |  |  |   <literal>null</literal> et si c'est la balise fermante, elle sera | 
					
						
							|  |  |  |  |   <20>gale au contenu du bloc de template. Notez que le bloc de template | 
					
						
							|  |  |  |  |   aura d<>j<EFBFBD> <20>t<EFBFBD> ex<65>cut<75> par Smarty, vous recevrez donc la sortie du | 
					
						
							|  |  |  |  |   template et non sa source. | 
					
						
							|  |  |  |  |  </para> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   <para> | 
					
						
							|  |  |  |  |    Le param<61>tre <parameter>&$repeat</parameter> est pass<73> | 
					
						
							|  |  |  |  |    par r<>f<EFBFBD>rence <20> la fonction d'impl<70>mentation et fournit la possibilit<69> | 
					
						
							|  |  |  |  |    de contr<74>ler le nombre d'affichage du bloc. Par d<>faut,  | 
					
						
							|  |  |  |  |    <parameter>$repeat</parameter> vaut <literal>true</literal> | 
					
						
							|  |  |  |  |    lors du premier appel <20> la fonction de bloc (le bloc d'ouverture du tag) et | 
					
						
							|  |  |  |  |    <literal>false</literal> lors de tous les autres appels <20> la fonction | 
					
						
							|  |  |  |  |    de bloc (le bloc de fermeture du tag). Chaque fois que la fonction | 
					
						
							|  |  |  |  |    d'impl<70>mentation retourne avec le param<61>tre  | 
					
						
							|  |  |  |  |    <parameter>&$repeat</parameter> vallant true, le contenu situ<74> | 
					
						
							|  |  |  |  |    entre {func} .. {/func} est <20>valu<6C> et la fonction d'impl<70>mentation est appel<65> | 
					
						
							|  |  |  |  |    une nouvelle fois avec le nouveau bloc de contenu en tant que param<61>tre | 
					
						
							|  |  |  |  |    <parameter>$content</parameter>. | 
					
						
							|  |  |  |  |  </para> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |  <para> | 
					
						
							|  |  |  |  |   Si vous imbriqu<71> des fonctions de bloc, il est possible de conna<6E>tre | 
					
						
							|  |  |  |  |   la fonction de bloc parente gr<67>ce <20> la variable <varname>$smarty->_tag_stack</varname>. | 
					
						
							|  |  |  |  |   Fa<46>tes un var_dump() dessus et la structure devrait appara<72>tre. | 
					
						
							|  |  |  |  |  </para> | 
					
						
							|  |  |  |  |  <para> | 
					
						
							|  |  |  |  |   Regardez aussi : | 
					
						
							|  |  |  |  |   <link linkend="api.register.block">register_block()</link>, | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |   <link linkend="api.unregister.block">unregister_block()</link>. | 
					
						
							| 
									
										
										
										
											2004-12-26 20:05:31 +00:00
										 |  |  |  |  </para> | 
					
						
							|  |  |  |  |  <example> | 
					
						
							|  |  |  |  |   <title>Fonction de bloc</title> | 
					
						
							|  |  |  |  |   <programlisting role="php"> | 
					
						
							|  |  |  |  | <![CDATA[ | 
					
						
							|  |  |  |  | <?php | 
					
						
							| 
									
										
										
										
											2004-04-13 11:47:32 +00:00
										 |  |  |  | /* | 
					
						
							|  |  |  |  |  * 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; | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2004-12-26 20:05:31 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | ?> | 
					
						
							|  |  |  |  | ]]> | 
					
						
							|  |  |  |  |   </programlisting> | 
					
						
							|  |  |  |  |  </example> | 
					
						
							|  |  |  |  | </sect1> | 
					
						
							| 
									
										
										
										
											2004-05-23 15:50:53 +00:00
										 |  |  |  |  <!-- Keep this comment at the end of the file
 | 
					
						
							|  |  |  |  |  Local variables: | 
					
						
							|  |  |  |  |  mode: sgml | 
					
						
							|  |  |  |  |  sgml-omittag:t | 
					
						
							|  |  |  |  |  sgml-shorttag:t | 
					
						
							|  |  |  |  |  sgml-minimize-attributes:nil | 
					
						
							|  |  |  |  |  sgml-always-quote-attributes:t | 
					
						
							|  |  |  |  |  sgml-indent-step:1 | 
					
						
							|  |  |  |  |  sgml-indent-data:t | 
					
						
							|  |  |  |  |  indent-tabs-mode:nil | 
					
						
							|  |  |  |  |  sgml-parent-document:nil | 
					
						
							|  |  |  |  |  sgml-default-dtd-file:"../../../../manual.ced" | 
					
						
							|  |  |  |  |  sgml-exposed-tags:nil | 
					
						
							|  |  |  |  |  sgml-local-catalogs:nil | 
					
						
							|  |  |  |  |  sgml-local-ecat-files:nil | 
					
						
							|  |  |  |  |  End: | 
					
						
							|  |  |  |  |  vim600: syn=xml fen fdm=syntax fdl=2 si | 
					
						
							|  |  |  |  |  vim: et tw=78 syn=sgml | 
					
						
							|  |  |  |  |  vi: ts=1 sw=1 | 
					
						
							|  |  |  |  |  --> |