php関数をSmartyの修正子として使用する方法。とても便利です。
Smarty|php関数を修正子として利用する
データに書式を設定する
[2006-01-30 (月) 13:11]
php関数をSmarty修正子として利用する方法です。記事中Smartyタグは標準の”{~}”で書いています。xoopsの場合は”<{~}>”で括るように変更されています。お間違えのないように。
php関数を修正子として利用する場合の注意事項
【基本構文】
《php関数の構文》
func_name(arg1,arg2,arg3……);
関数名(引数1,引数2,引数3……);
《Smarty修正子の構文》
{引数1|関数名:引数2:引数3……}
php関数の引数1がSmarty変数と同じであれば,
{Smarty変数|php関数名:引数2:引数3……}
日付・時刻の書式設定
たとえば,date関数を使って,日付の書式を指定する場合を考えます。現在日時(ユニックスタイムスタンプ)を日付・時刻書式で表示する場合,php関数では,次のように書きます。
echo date(“Y-n-j H:i:s”,time()); => 2006-1-30 14:15
Smartyにも「date_format」修正子が用意されているのですが,月や日を1桁で表示するフォーマット文字列がありません。そのため,月日を1桁で表示するには,php関数の力を借りなければなりません。次のようにします。
{“Y-n-j H:i:s”|date:$smarty.now} => 2006-1-30 14:15
式中の「$smarty.now」は,Smartyの予約変数で,現在日時の値を返します。
数字の書式設定
数字に3桁区切りなどの書式を設定するには,「numbar_format関数」を使用します。
【number_format関数の概要】
* 3桁ごとに数値を区切ります
* 表示する小数部の桁数を指定できます
* 表示する区切り文字と小数点記号を指定できます
【基本構文】
php関数の場合
number_format(数値[,小数桁数,[小数点文字,桁区切り文字]])
Smarty修正子の場合
{number_format|数値[:小数桁数:[小数点文字:桁区切り文字]]}
【実例集】
実例1:3桁に区切り,整数部だけを表示
小数つきの数値を3桁区切りの整数で表示します。小数1位で四捨五入されます。
《phpで処理する場合》
$var = 1234567890.6543;
echo number_format($var): => 1,234,567,890
《Smartyで処理する場合》
{$var|number_format} => 1,234,567,890
実例2:小数桁数を指定した桁区切り数値の表示
小数部の桁数を(例では2桁に)指定。整数部は3桁ごとにカンマで区切ります。指定桁の次の桁で四捨五入されます。
《phpで処理する場合》
$var = 1234567890.6543;
echo number_format($var,2); => 1,234,567,890.65
《Smartyで処理する場合》
$var = 1234567890.6543;
{$var|number_format:2} => 1,234,567,890.65
整数部は3桁区切り,小数桁数指定,小数点記号と区切り記号を指定する
桁区切り記号に「-」,小数点の代わりに「_」を指定します。
《phpで処理する場合》
$var = 1234567890.6543;
echo number_format($var,2,”_”,”-“); => 1-234-567-890_65
《Smartyで処理する場合》
$var = 1234567890.6543;
{$var|number_format:2:”_”:”-“} => 1-234-567-890_65