解説
ifは条件分岐を行うためのコマンドで、コマンドタグ {%if 条件式%} から始まり、コマンドタグ {%endif%} で終わります。偽の場合の表示内容も同時に定義するには、コマンドタグ {%else%} を使用します。{%if 条件式%} を開始タグ、{%endif%} を終了タグと呼び、開始タグから終了タグまでの間をifブロックと呼びます。
条件式を評価するための演算子としては、プロパティが定義されているかどうかを評価するための defined と、反転演算子の ! が実装されています。
条件式 "defined プロパティA" は、プロパティAが定義されているかどうかを評価し、定義されている場合は真、定義されていない場合は偽を返します。ここで言う「定義されている」とは、一文字以上の値が設定されているかどうかを指します。
条件式に反転演算子を付加することで、条件式を反転することが可能です。つまり、先ほどの条件式に反転演算子を付加し "! defined プロパティA" とすることで、プロパティAが定義されていない場合に真を返すようになります。
Example {%if defined プロパティA%} プロパティAが定義されている場合に表示する内容 {%endif%} {%if defined プロパティA%} プロパティAが定義されている場合に表示する内容 {%else%} プロパティAが定義されていない場合に表示する内容 {%endif%} {%if ! defined プロパティA%} プロパティAが定義されていない場合に表示する内容 {%endif%} {%if ! defined プロパティA%} プロパティAが定義されていない場合に表示する内容 {%else%} プロパティAが定義されている場合に表示する内容 {%endif%}
Example {%if defined プロパティA%} {%if defined プロパティB%} プロパティA, プロパティBの両方が定義されている場合に表示する内容 {%else%} プロパティAのみ定義されている場合に表示する内容 {%endif%} {%else%} {%if defined プロパティB%} プロパティBのみ定義されている場合に表示する内容 {%else%} プロパティA, プロパティBの両方が定義されていない場合に表示する内容 {%endif%} {%endif%}
Example ! 悪い例: 開始タグ内の条件式、演算子の間には空白が必要 {%if!defined HTML.TITLE.value%} ! 悪い例: {%if 〜%} と {%else%} の間は1行以上必要 ! (このようなケースは {%if ! defined 〜%} を使いましょう) {%if defined HTML.TITLE.value%} {%else%} タイトルが定義されていません {%endif%} ! 悪い例: {%else%} と {%endif%} の間は1行以上必要 ! (このようなケースは {%else%} を省略しましょう) {%if defined HTML.TITLE.value%} $HTML.TITLE$ {%else%} {%endif%}
Example ! FORM.ICON.file が定義されている場合のみアイコン選択欄を表示 {%if defined FORM.ICON.file%} アイコン: $FORM.ICON$ [ <a href="$DATA.ICON_LIST$">List</a> ] {%endif%} ! FORM.NAME.fixed_value が定義されていなければ名前欄を表示 ! 表示する内容はこのように複数行でも構いません {%if ! defined FORM.NAME.fixed_value%} <tr> <td>お名前</td> <td>$FORM.NAME$</td> </tr> {%endif%}