块函数

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

块函数的形式是:{func} .. {/func}。 换句话说,它们用标签圈起一个块,然后对这个块的内容进行操作。 块函数优先于同名的自定义函数, 这样,你不能同时有自定义函数{func}和块函数{func}..{/func}

如果使用了嵌套的块函数, 可以通过$smarty->_tag_stack变量来找到父块的函数。 只要对其用一下var_dump() 就可以知道整个层次结构了。

Example 18.5. 块函数


<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * File:     block.translate.php
 * Type:     block
 * Name:     translate
 * Purpose:  翻译一块文字
 * -------------------------------------------------------------
 */
function smarty_block_translate($params, $content, Smarty_Internal_Template $template, &$repeat)
{
    // 只在结束标签时输出
    if(!$repeat){
        if (isset($content)) {
            $lang = $params['lang'];
			// 翻译$content的内容
            return $translation;
        }
    }
}
?>

     

参见: registerPlugin(), unregisterPlugin().