Модификаторы - это маленькие функции, которые воздействуют на переменные в шаблоне перед тем, как те будут выведены на экран или использованы в ином контексте. Для каждой переменной шаблона, одновременно могут быть использованы несколько модификаторов.
mixed smarty_modifier_name( |
$value, | |
$param1); |
mixed $value;[mixed $param1, ...];Первый параметр плагина-модификатора это значение в отношении которого модификатор будет применен. Остальные параметры могут быть произвольными, в зависимости от операций, которые они осуществляют.
Модификатор должен возвращать результат, полученный в процессе своего выполнения.
Смотрите также: register_modifier(), unregister_modifier().
Example 16.3. Простой плагин-модификатор
Этот плагин в своей основе является аналогом одной из PHP-функций. Он не имеет никаких дополнительных параметров.
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
* Файл: modifier.capitalize.php
* Тип: modifier
* Имя: capitalize
* Назначение: Сделать первую букву каждого слова в
* строке прописной
* -------------------------------------------------------------
*/
function smarty_modifier_capitalize($string)
{
return ucwords($string);
}
?>
Example 16.4. Более сложный модификатор
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
* Файл: modifier.truncate.php
* Тип: modifier
* Имя: truncate
* Назначение: Урезать строку до определенной длины,
* при необходимости обрезать слово на половине и присоеденить строку $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;
}
?>