What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
void smarty_block_name( |
$params, | |
$content, | ||
&$smarty, | ||
&$repeat) ; |
array $params
;mixed $content
;object &$smarty
;boolean &$repeat
;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}.
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 &$repeat
abajo para ver como hacer
cambios a esto).
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 $params
como un arreglo
asociativo. Usted puede accesar a cualquiera de estos valores
directamente, e.g. $params['start']
.
Los atributos de la etiqueta de apertura son también son accesibles
a su función cuando se procesa la etiqueta de cierre.
El valor de la variable $content
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á
null
, 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.
El parámetro &$repeat
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 $repeat
es true
en la primera llamada de la block-function (etiqueta de apertura del
bloque) y false
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 &$repeat
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 $content
.
Si usted tiene funciones de bloque anidadas, es posible descubrir
cual es el padre de la función de bloque accesando la variable
$smarty->_tag_stack
.
Solo hacer un var_dump() sobre ella y la estrutura estara visible.
Vea tambien: register_block(), unregister_block().
Example 16.5. Función de bloque
<?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; } } ?>