スニペット"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パラメーターで複数のカスタム名を指定する場合は、カンマ区切りで指定します。