{if}関数

広告

{if}関数は記述した条件式が真が偽かによって実行する処理を分けるために使用されます。基本的な書式は次の通りです。

{if 条件式}
  条件式が真(true)の時に実行される処理
{/if}

{if}関数は{if}と{/if}をペアで使用します。

例えば変数の値がある値に等しい時だけ何かを出力するようなことが可能となります。テンプレートファイル内で使用しますので実行される処理の箇所には単に出力したい文字列を記述しても構いませんし、他の繰り返し処理などを記述することもできます。

条件式には比較演算子を使って変数の値を他の値と比較を行います。比較演算子については次のページで詳しく確認します。ここでは具体的な例だけ見て下さい。

{if $engine == 'yahoo'}
  <p>検索サイトは<a href="http://www.yahoo.co.jp/">Yahoo</a>です</p>
{/if}

上記の場合は変数「engine」に渡されてきた値が「yahoo」だった場合に{if}と{/if}に囲まれた箇所に記述された文を出力します。

サンプルプログラム

では簡単なサンプルプログラムを作成して試してみます。

sample1-1.php

<?php

require_once('Smarty.class.php');

$smarty = new Smarty();

$smarty->template_dir = 'd:/smartysample/if/templates/';
$smarty->compile_dir  = 'd:/smartysample/if/templates_c/';
$smarty->config_dir   = 'd:/smartysample/if/configs/';
$smarty->cache_dir    = 'd:/smartysample/if/cache/';

$smarty->assign('title', '条件分岐のテスト');
$smarty->assign('engine', 'yahoo');

$smarty->display('sample1-1.tpl');

?>

上記を「sample1-1.php」の名前で「(Apacheドキュメントルート)¥smarty¥if」に保存します。

index1-1.tpl

{* Smarty if/sample1-1.tpl *}
<html>
<head>
<title>Smarty Test</title>
</head>
<body>

<h1>{$title}</h1>
<p>検索エンジンをお知らせします。</p>
{if $engine == 'yahoo'}
  <p>検索サイトは<a href="http://www.yahoo.co.jp/">Yahoo</a>です</p>
{/if}

{if $engine == 'google'}
  <p>検索サイトは<a href="http://www.google.co.jp/">Google</a>です</p>
{/if}

</body>
</html>

上記を「sample1-1.tpl」の名前で「D:¥smartysample¥if¥templates」に保存します。

そしてブラウザから「http://localhost/smarty/if/sample1-1.php」へアクセスして下さい。

{if}関数

今回のサンプルでは{if}関数を2つ使っていますが、1つ目の{if}関数は条件式が真となるためその下の処理が実行されていますが2つ目の{if}関数は条件式が偽となるため何も行われていません。

( Written by Tatsuo Ikura )