Block Functions

void smarty_block_name (array $params, mixed $content, object &$smarty, boolean &$repeat)

Block functions are functions of the form: {func} .. {/func}. In other words, they enclose a template block and operate on the contents of this block. Block functions take precedence over custom functions of the same name, that is, you cannot have both custom function {func} and block function {func}..{/func}.

If you have nested block functions, it's possible to find out what the parent block function is by accessing $smarty->_tag_stack variable. Just do a var_dump() on it and the structure should be apparent.

Example 16-5. block function

<?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)
{
    
// only output on the closing tag
    
if(!$repeat){
        if (isset(
$content)) {
            
$lang $params['lang'];
            
// do some intelligent translation thing here with $content
            
return $translation;
        }
    }
}
?>

See also: register_block(), unregister_block().