解説
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%}