さっき、「OpenPNE のテンプレートエンジンは Smarty だから」の中で書いた Smarty の例文のつづき。
ログインしてニックネームが取れる状態と、未ログインでニックネームが取れない場合で処理を分けるには、
({if $c_member.nickname})
({$c_member.nickname})さん、こんにちは
({else})
ようこそ!
({/if})
と書けば良いのだが、例えば、ニックネームが取れないときは、無条件に'ゲスト'という名前にしちゃうというのであれば、
({$c_member.nickname|default:'ゲスト'})さん こんにちは
$c_member.nickname が偽(未定義値だったり空だったり)の時、標準で'ゲスト'を出威力せよということだ。
なるほど、いちいちロジック書かなくても良いのは確かに便利だ。
が、これを便利だと思った瞬間に、何となく自分のプログラマ度が下がった気がするのは何故だろう。(笑)
ところで、Smarty のマニュアルを読むと、デリミタ文字は {}(波カッコ)になっているのに、OpenPNE のテンプレートじゃ ({})(丸カッコと波カッコの組み合わせ)になってるんで、なんでやねん?OpenPNE の独自仕様 Smarty ?とか思ったら、
$smarty = new Smarty;
$smarty->left_delimiter = '({';
$smarty->right_delimiter = '})';
...
みたいに簡単にデリミタ文字の設定は変えられるようで。
そりゃそうだよな。