スニペット"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 |
前の条件または次の条件。 |
- ※ 論理演算子は2つまでしか使用することができません。
サンプルコード
単体
複数
配列
次のように算術演算子を使用することも可能です。
真の場合の出力
条件に一致した場合に出力する内容を指定するには、&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パラメーターで複数のカスタム名を指定する場合は、カンマ区切りで指定します。