Модификаторы

Модификаторы - это маленькие функции, которые воздействуют на переменные в шаблоне перед тем, как те будут выведены на экран или использованы в ином контексте. Для каждой переменной шаблона, одновременно могут быть использованы несколько модификаторов.

mixed smarty_modifier_name (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($string0$length+1);
        if (
$break_words)
            
$fragment substr($fragment0, -1);
        else
            
$fragment preg_replace('/\s+(\S+)?$/'''$fragment);
        return 
$fragment.$etc;
    } else
        return 
$string;
}
?>

HIVE: All information for read only. Please respect copyright!
Hosted by hive йца: йХЕБЯЙЮЪ ЦНПНДЯЙЮЪ АХАКХНРЕЙЮ