ソースレベルで条件分岐をする方法

更新日
2017.09.03
作成日
2016.12.15

移行作業中のため一部のページが正しく表示されていない場合があります(o-ω-))

テンプレートやドキュメント中でソースレベルで条件分岐をする方法です。

@IF文による分岐処理

@IF / @ELSEIF / @ELSE / @ENDIF は条件分岐用の特殊タグです。

基本的な使い方

<!--@IF:[*変数A:isnotempty*]>値があれば表示<@ENDIF-->
<!--@IF:[*変数A:isempty*]>値が無ければ表示<@ENDIF-->

条件で振り分ける

コメントタグはお好みで以下の3つのパターンで書くことができる。基本で使ってるのは1番目の方法。

分岐を全てコメント化する

<!--@IF:[*変数A:isnotempty*]>
  変数Aに値があれば表示
<@ELSE>
  そうでなければ表示
<@ENDIF-->

分岐タグだけコメント化する

<!--@IF:[*変数A:isnotempty*]-->
  変数Aに値があれば表示
<!--@ELSE-->
  そうでなければ表示
<!--@ENDIF-->

コメントタグを使わない

<@IF:[*変数A:isnotempty*]>
  変数Aに値があれば表示
<@ELSE>
  そうでなければ表示
<@ENDIF>

ネストも可能

<!--@IF:[*変数A:isnotempty*]>
  変数Aに値があれば表示
<@ELSE>
  そうでなければ表示
  <@IF:[*変数B:isnotempty*]>
    変数Bがあれば表示
  <@ENDIF>
<@ENDIF-->

ネストする場合はコメントタグがネストにならないように注意!

モディファイアを組み合わせる

モディファイアを組み合わせることでスニペットを使わなくても多少複雑な分岐もできる。

<!--@IF:[+notes:is(`A`)+]>notesにAが設定されています<@ENDIF-->

HTML 上に長々とコードが入るのも見通しが悪くなるので場合によってスニペットと使い分けるのがおすすめ。

モディファイアによる分岐処理

条件分岐のためのモディファイアが用意されているのでいくつか紹介。

ifempty - 値が無ければ別の内容を表示

[*name:ifempty([*pagetitle*])*]

ifnotempty - 値があれば別の内容を表示

[*name:ifnotempty(<p>[*name*]</p>)*]