条件によって、ある部分は表示したくないなどの場合が出てくると思います。この場合はif,elseif,elseを使用すれば簡単に出来ます。
条件によって、ある部分は表示したくないなどの場合が出てくると思います。この場合はif,elseif,elseを使用すれば簡単に出来ます。
{if}文の構文は下記のようなものになります。下記の例は$_GET['lang']変数によって表示を切り替える場合のテンプレートです。
{if $smarty.get.lang=='jp'}
こんにちは
{elseif $smarty.get.lang=='ch'}
<span lang="zh">尓好</span>
{else}
<span lang="en">Hello</span>
{/if}
{if}文はphpのそれとほぼ同じと考えて良いでしょう。ただし、条件演算子にはphpには存在しない演算子もあります(例えばis div by
など)。詳しくはマニュアルを見てください。
また、{if}文の中ではphpの関数を使用することもできます。
{if empty($data) }
データが無いよ
{else}
データがあるよ。
{/if}
$security変数がTUREの場合、{if}文の中で使うことができる関数は、$security_settings指定されたphp関数のみが利用可能となります。
下記のコードは、Smarty.class.phpに書かれている、デフォルトの$security_settingsの値です。$security変数をTUREにした場合は、'array', 'list', 'isset', 'empty', 'count', 'sizeof', 'in_array', 'is_array'関数が{if}文中で使用可能になります。
var $security_settings = array(
'PHP_HANDLING' => false,
'IF_FUNCS' => array('array', 'list',
'isset', 'empty',
'count', 'sizeof',
'in_array', 'is_array',
'true', 'false', 'null'),
'INCLUDE_ANY' => false,
'PHP_TAGS' => false,
'MODIFIER_FUNCS' => array('count'),
'ALLOW_CONSTANTS' => false
);
それ以外の関数を使いたい場合は、$security_settings['IF_FUNCS']変数に関数を追加すれば使用可能になります。