mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-10-31 20:31:41 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			120 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| <?xml version="1.0" encoding="iso-8859-1"?>
 | |
| <!-- $Revision$ -->
 | |
|    <sect1 id="plugins.block.functions"><title>Block Functions</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>
 | |
|       <paramdef>boolean <parameter>&$repeat</parameter></paramdef>
 | |
|      </funcprototype>
 | |
|     </funcsynopsis>
 | |
|     <para>
 | |
|      Las funciones de bloque son funciones de forma: {func} .. {/func}.
 | |
|      En otras palabras, estas encapsulan un bloque del template y operan 
 | |
|      el contenido de este bloque. Las funciones de bloque toman precedencia 
 | |
|      sobre las funciones habituales con el mismo nombre, es decir, usted no 
 | |
|      puede tener ambas, las funciones habituales {func} y las funciones de 
 | |
|      bloque {func} .. {/func}.
 | |
|     </para>
 | |
|     <para>
 | |
|      Por default la implementación de su función es llamada dos
 | |
|      veces por el Smarty: una vez por la etiqueta de apertura, y 
 | |
|      la otra por la etiqueta de cierre 
 | |
|      (vea <literal>&$repeat</literal> abajo para ver como hacer
 | |
|      cambios a esto).
 | |
|     </para>
 | |
|     <para>
 | |
|      Solo la etiqueta de apertura de la función de bloque puede tener
 | |
|      atributos. Todos los atributos pasados a las funciones de template 
 | |
|      estan contenidos en <parameter>$params</parameter> como un arreglo
 | |
|      asociativo. Usted puede accesar a cualquiera de estos valores 
 | |
|      directamente, e.g. <varname>$params['start']</varname>. 
 | |
|      Los atributos de la etiqueta de apertura son también son accesibles 
 | |
|      a su función cuando se procesa la etiqueta de cierre.
 | |
|     </para>
 | |
|     <para>
 | |
|      El valor de la variable <parameter>$content</parameter> depende de
 | |
|      que si su función es llamada por la etiqueta de cierre o de apertura.
 | |
|      En caso de que la etiqueta sea de apertura, este será
 | |
|      <literal>null</literal>, si la etiqueta es de cierre el valor será 
 | |
|      del contenido del bloque del template. Se debe observar que el bloque 
 | |
|      del template ya a sido procesado por el Smarty, asi todo lo que usted 
 | |
|      recibirá es la salida del template, no el template original.
 | |
|     </para>
 | |
| 
 | |
|     <para>
 | |
|      El parámetro <parameter>&$repeat</parameter> es pasado por
 | |
|      referencia para la función de implementación y proporciona
 | |
|      la posibilidad de controlar cuantas veces será mostrado el bloque.
 | |
|      Por default <parameter>$repeat</parameter> es <literal>true</literal>
 | |
|      en la primera llamada de la block-function (etiqueta de apertura del 
 | |
|      bloque) y <literal>false</literal> en todas las llamadas subsecuentes 
 | |
|      a la función de boque (etiqueta de cierre del boque). Cada vez que es 
 | |
|      implementada la función retorna con el <parameter>&$repeat</parameter>
 | |
|      siendo true, el contenido entre {func} .. {/func} es evaluado y es 
 | |
|      implementado a la función es llamada nuevamente con el nuevo contenido 
 | |
|      del bloque en el parámetro <parameter>$content</parameter>.
 | |
| 	   </para>
 | |
| 
 | |
|     <para>
 | |
|      Si usted tiene funciones de bloque anidadas, es posible descubrir 
 | |
|      cual es el padre de la función de bloque accesando la variable
 | |
|      <varname>$smarty->_tag_stack</varname>.
 | |
|      Solo hacer un var_dump() sobre ella y la estrutura estara visible.
 | |
|     </para>
 | |
|     <para>
 | |
|      Vea tambien:
 | |
|      <link linkend="api.register.block">register_block()</link>,
 | |
|      <link linkend="api.unregister.block">unregister_block()</link>.
 | |
|     </para>
 | |
|     <example>
 | |
|      <title>Función de bloque</title>
 | |
|      <programlisting role="php">
 | |
| <![CDATA[
 | |
| <?php
 | |
| /*
 | |
|  * Smarty plugin
 | |
|  * -------------------------------------------------------------
 | |
|  * File:     block.translate.php
 | |
|  * Type:     block
 | |
|  * Name:     translate
 | |
|  * Purpose:  translate a block of text
 | |
|  * -------------------------------------------------------------
 | |
|  */
 | |
| function smarty_block_translate($params, $content, &$smarty, &$repeat)
 | |
| {
 | |
|     if (isset($content)) {
 | |
|         $lang = $params['lang'];
 | |
|         // do some intelligent translation thing here with $content
 | |
|         return $translation;
 | |
|     }
 | |
| }
 | |
| ?>
 | |
| ]]>
 | |
|      </programlisting>
 | |
|     </example>
 | |
|    </sect1>
 | |
| 
 | |
| <!-- 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
 | |
| -->
 |