PEAK XOOPS - あまり知られていない(?)Smartyフィルターの利用法(2) in englishin japanese

Archive | RSS |
XOOPS
XOOPS : あまり知られていない(?)Smartyフィルターの利用法(2)
Poster : GIJOE on 2006-07-10 06:26:44 (11736 reads)

in englishin japanese
SmartyフィルターTipsの第2回。

SmartyのModifierとしてプラグインではなく、通常の関数を利用する場合、その関数は以下のように呼び出されます。

Smarty内表記:
<{param1|function:param2:param3:param4}>

実際の呼び出しコード:
echo function( param1 , param2 , param3 , param4 ) ;

(※より正確には、第1引数が配列の場合には、子要素すべてにその関数を適用する、なんて親切なのかお節介なのか良く判らないコードも含めてコンパイルされていますが、ここでは対象を文字列に限定します)

PHPの文字列関数だと、第1パラメータに元となる文字列を指定することが多いので、この仕様でもOKなのですが、正規表現関数や日付関数などはそうではありません。

例えば、日本における最も一般的な日付表記は、Y/n/j だと思いますが、Smartyのデフォルトプラグインに存在するdate_formatは、strftime()のラッパなので、これと同じ表現を行うことが出来ません。

でも、上の法則をよく見てちょっと頭をひねれば、解決法が見えてきます。$news.created にUNIX_TIMESTAMP形式でアサインされていた場合、Smarty側でこのように表記します。


<{"Y/n/j"|date:$news.created}>

なんだかちょっと変だな、と思うかも知れませんが、上のルールで変換すれば判りやすいでしょう。

echo date( "Y/n/j" , $news['created'] ) ;

PHPプログラマなら、ここでポンと膝を叩けると思います。

プログラマではないデザイナの皆さんにとってももちろん強力なツールたり得ます。今まで、Modifierプラグインとして用意されたものしか存在しなかった引き出しが、PHPの標準的な文字列関数・数学関数・日付関数・正規表現関数など、一気に増えるわけです。

tplsadminもしくはaltsysを使って、PHP関数リファレンスでも片手に、いろいろ試してみると良いでしょう。

次回は、Modifierとしての関数利用における制限について書きます。


Printer friendly page Send this story to a friend

Comments list

GIJOE  Posted on 2006/7/10 14:15
まあまあ。第3回をお待ちアレ
ちゃんと制限についても書きますよ。
tohokuaiki  Posted on 2006/7/10 12:26
ちょ、これは便利なんですが、多用はマズイですね。(苦笑)

Smartyの利点は「View」の機能を制限させること・・と思っているので、何でもかんでもテンプレートでできるのは{php}ブロック同様に辛いかも。

面倒とは思いつつも、プラグイン書いて登録しています・・・。あー、でもXOOPSなんかは簡単に登録できないし、しょうがないか・・・。
Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!