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