修飾子プラグイン (プラグインによる Smarty の拡張) - PHPプロ!マニュアル

Smartyマニュアル

プラグインによる Smarty の拡張 - 修飾子プラグイン

修飾子プラグイン

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

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

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

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

例 16-3. シンプルな修飾子プラグイン

このプラグインは、基本的に組み込みの PHP 関数の名前を変えただけのものです。 追加のパラメータはありません。

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

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

register_modifier() および unregister_modifier() も参照してください。



Pick Up Q&A

Q
array_mergeの再帰処理の動作について
 このエントリーをはてなブックマークに追加 
A
>1個になったとき$leftを返しますが、 >このとき、最終的な$leftはnullになるかと思います。 いいえ、最後は「渡された配列をそのまま」返します。要素が2以上あるときとの違いは(並べ替えずに戻るので...

>>続きを読む

再帰関数は最初の内は混乱しますが、非常に上手く使える場面もいずれ出てきます。これを機会に学んでいけるといいですね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)