mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-11-04 06:11:37 +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
 | 
						|
-->
 |