修正子プラグイン

修正子プラグインは、テンプレートの変数が表示される前または他のコンテンツに使用される前に適用される関数です。

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

修正子プラグインへの第1パラメータは、この修正子によって影響を受ける値です。残りのパラメータはどのような動作が行われるかによって任意です。

修正子プラグインは処理の結果を返す必要があります。

詳細は、 register_modifier()unregister_modifier() を参照して下さい。

例 15-3. シンプルな修正子プラグイン

基本的にこのプラグインは組み込みphp関数の別名のものです。これは追加のパラメータを全く持っていません。

<?php
/*
* Smarty plugin
* -------------------------------------------------------------
* File:     modifier.capitalize.php
* Type:     modifier
* Name:     capitalize
* Purpose:  文字列の各単語の最初の文字を大文字にする
* -------------------------------------------------------------
*/
function smarty_modifier_capitalize($string)
{
    return
ucwords($string);
}
?>

例 15-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;
}
?>