スニペット"if"による条件分岐

条件に応じて分岐するには、スニペットifを使用します。

@IF文を使用する方法もありますが、グローバル設定の"Enable <@SYNTAX>"が無効になっている場合は使用できません。
そういった場合の代用として使用することができます。
@IF文については条件分岐ページをご覧ください。

構文

ifにはいくつかのパラメーターがあります。
次の目次からご覧ください。

条件式

条件を指定するには、&isパラメーターを使用します。
論理演算子を使用して複数条件を指定することも可能です。

構文

複数の条件

説明
値A 値Bと比較する値。
プレースホルダーを指定することが多い。
比較演算子 値Aと値Bをどう比較するか。
比較演算子を参照。
値B 値Aと比較する値。
論理演算子 複数の条件を指定。
論理演算子を参照。

比較演算子

演算子名 演算子 説明
等しい =またはis 値Aと値Bが等しい。
等しくない !=またはnot 値Aと値Bが等しくない。
超える(より大きい) >またはgt 値Aが値Bより大きい(超える)。
以上 >=またはgte 値Aが値B以上である。
未満(より小さい) <またはlt 値Aが値Bより小さい。
以下 <=またはlte 値Aが値Bより以下。
含まれる contains 値Aに値Bが含まれる。
含まれない !containsまたはnot_contains 値Aに値Bが含まれない。
emptyまたはisempty 値Aが空。
値Bは指定しない。
空でない !emptyまたはnot_empty 値Aが空ではない。
値Bは指定しない。
null nullまたはis_null 値Aがnull。
値Bは指定しない。
配列に存在 inまたはin_array 値Aの配列に値Bが存在。
配列に存在しない !inまたはnot_in 値Aの配列に値Bが存在しない。

論理演算子

演算子名 演算子 説明
かつ and 前の条件かつ次の条件。
または or 前の条件または次の条件。

サンプルコード

単体

複数

次のように算術演算子を使用することも可能です。

真の場合の出力

条件に一致した場合に出力する内容を指定するには、&thenパラメーターを使用します。

構文

説明
出力する内容 条件に一致した場合に出力する内容。
@TPL:チャンク名を指定するとチャンクを出力することが可能。
一致しなければ出力しない。

サンプルコード

次の例では、リソースIDが13の場合は"一致"と出力します。

偽の場合の出力

条件に一致しなかった場合に出力する内容を指定するには、&elseパラメーターを使用します。

構文

説明
出力する内容 条件に一致しなかった場合に出力する内容。
@TPL:チャンク名を指定するとチャンクを出力することが可能。
一致すれば出力しない。

サンプルコード

次の例では、リソースIDが13でない場合は"一致しない"と出力します。

条件式の演算結果を出力

&isパラメーター(条件式)の演算結果を出力するには、&mathパラメーターを使用します。
&mathパラメーターを使用する際は、&isパラメーターは演算内容だけを指定します。

構文

初期値 説明
有効/無効 off 有効にするか無効にするか。
off ... 無効
on ... 有効

サンプルコード

次の例では、テンプレート変数priceに1.05を乗算した結果を出力します。

&thenパラメーターや&thenパラメーターが指定している場合は演算結果は出力されまず、&thenパラメーターや&thenパラメーターの指定した値を出力します。

条件式の区切り文字

&isパラメーター(条件式)の区切り文字を変更するには、&separatorパラメーターを使用します。

構文

初期値 説明
区切り文字 : 分割する文字列。

サンプルコード

条件式と結果のカスタマイズ

条件式と結果の戻り値を独自に用意することができます。
スニペット本体のディレクトリに「custom」というディレクトリ(パス:assets/snippets/if/custom)がありますので、そこに独自のカスタムファイルを設置します。
初期では「if.fileExists.php」というファイルが用意されていますので、そちらを参考にするとよいでしょう。

手順としてはまず、customディレクトリ内に「if.カスタム名.php」というファイルを作成します。
ここでは「if.equalTest.php」というファイル名で作成することとします。

作成したファイルを開き関数を記述します。
関数名はファイル名に合わせる必要はありません。

関数の第一引数にパラメーターである&is=`値A:比較演算子:値B`の値Aが、第二引数には値Bが渡ってきます。

関数の戻り値は、判定結果のみの場合はboolean値、算出結果を返したい場合は配列を返します。
配列の場合はarray(戻り値, 判定結果のBoolean値)で返します。

スニペットとして使用する時は、[[if? &is=`値A:関数名:値B` &custom=`カスタム名` ]]という風に、&customパラメーターにファイル名で指定したカスタム名、&isパラメーターの比較演算子部分に関数名を指定します。

なお、1つのファイルに複数の関数を持たせることが可能で、かつカスタム名(ファイル)も複数指定することが可能です。
&customパラメーターで複数のカスタム名を指定する場合は、カンマ区切りで指定します。

CMS「Evolution CMS」逆引きリファレンス一覧へ戻る