Skip to content

修饰器 {/programmers/plugins/plugins-modifiers/}

修饰器是应用于模板中的变量的小函数,这些变量在显示或在其他上下文中使用之前会被应用修饰器。修饰器可以被链式使用。

mixed smarty_modifier_name(mixed $value, [mixed $param1, ...])

修饰器插件的第一个参数是要操作的值。其余的参数是可选的,取决于要执行的操作类型。

修饰器必须返回其处理的结果。

以下是两个示例插件,一个是将字符串中的单词首字母大写,另一个是将字符串截断到指定长度:

<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * File:     modifier.capitalize.php
 * Type:     modifier
 * Name:     capitalize
 * Purpose:  capitalize words in the string
 * -------------------------------------------------------------
 */
function smarty_modifier_capitalize($string)
{
    return ucwords($string);
}
?>
<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * File:     modifier.truncate.php
 * Type:     modifier
 * Name:     truncate
 * Purpose:  Truncate a string to a certain length if necessary,
 *           optionally splitting in the middle of a word, and
 *           appending the $etc string.
 * -------------------------------------------------------------
 */
function smarty_modifier_truncate($string, $length = 80, $etc = '...',
                                  $break_words = false)
{
    if ($length == 0)
        return '';

    if (strlen($string) > $length) {
        $length -= strlen($etc);
        $fragment = substr($string, 0, $length+1);
        if ($break_words)
            $fragment = substr($fragment, 0, -1);
        else
            $fragment = preg_replace('/\s+(\S+)?$/', '', $fragment);
        return $fragment.$etc;
    } else
        return $string;
}
?>

参见 registerPlugin(), unregisterPlugin().