修饰器是一些小函数, 它们会对模板中的变量,在显示之前或使用前进行处理。 修饰器可以连用。
mixed smarty_modifier_name( |
$value, | |
$param1); |
mixed $value;[mixed $param1, ...];第一个参数是修饰器所修饰的变量值。 余下的参数是可选的,它们是附加传递给修饰器的参数。
修饰器必须return处理的结果。
Example 18.3. 一个简单的修饰器
这个修饰器简单地用别名替代了PHP内置的函数,不带其他的附加参数。
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
* File: modifier.capitalize.php
* Type: modifier
* Name: capitalize
* Purpose: 让文字首字母大写
* -------------------------------------------------------------
*/
function smarty_modifier_capitalize($string)
{
return ucwords($string);
}
?>
Example 18.4. 更复杂的修饰器
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
* File: modifier.truncate.php
* Type: modifier
* Name: truncate
* Purpose: 截取字符串长度,多余的部分会被$etc字符串代替。
* -------------------------------------------------------------
*/
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;
}
?>