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'] ) ;