Smarty 图标

您可以根据商标声明使用 Smarty 徽标。

Smarty Template Engine Smarty Template Engine

如需赞助、广告、新闻或其他查询,请联系

使用 Smarty 的网站

广告

块函数

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

块函数是以 {func} .. {/func} 形式存在的函数。换句话说,它们包含一个模板块并在该块的内容上进行操作。块函数优先于同名自定义函数,也就是说,您不能同时拥有自定义函数 {func} 和块函数 {func}..{/func}

  • 默认情况下,您的函数实现会被 Smarty 调用两次:一次针对开始标签,一次针对结束标签。(请参阅下面的 $repeat,了解如何更改此设置。)

  • 从 Smarty 3.1 开始,开始标签调用的返回值也会显示出来。

  • 只有块函数的开始标签才能有属性。从模板传递到模板函数的所有属性都包含在 $params 变量中,作为一个关联数组。处理结束标签时,您的函数也可以访问开始标签属性。

  • $content 变量的值取决于您的函数是被用于开始标签还是结束标签。对于开始标签,它将是 NULL,对于结束标签,它将是模板块的内容。请注意,模板块已经由 Smarty 处理过,因此您收到的只是模板输出,而不是模板源。

  • 参数 $repeat 将按引用传递给函数实现,并让其可以控制显示块的次数。默认情况下,在块函数(打开标签)的第一次调用时 $repeatTRUE,在所有后续的块函数调用(块的关闭标签)中为 FALSE。每次函数实现返回时如果 $repeatTRUE,则评估 {func}...{/func} 之间的内容,并使用参数 $content 中的新块内容再次调用函数实现。

如果您有嵌套块函数,则可以通过访问 $smarty->_tag_stack 变量来找出父块函数是什么。对此做 var_dump(),结构应很明显。

示例 18.5。块函数

<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * File:     block.translate.php
 * Type:     block
 * Name:     translate
 * Purpose:  translate a block of text
 * -------------------------------------------------------------
 */
function smarty_block_translate($params, $content, Smarty_Internal_Template $template, &$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;
        }
    }
}
?>

     

另请参见:registerPlugin()unregisterPlugin()