コメントタグ
ブラウザでプレビューする際に都合がいいように、下記の記法はHTMLコメントとして解釈される仕様になっています。
http://modx.jp/blog/20141212.html
<!--@IF:「判定」>~<@ELSE>~<@ENDIF-->
@IF節の条件判定により、任意ブロックの表示・非表示を制御します。「判定」部分のパース結果が「空」かどうかのみを判定します。モディファイアを用いると、「XXXの文字数がnnnを超える場合」などのような高度な判定を行なうことができます。
これを記述したテンプレートをブラウザでプレビューした場合、@IF節から@ENDIF節までの区間はHTMLコメントとして解釈されるため表示されません。
<!--@IF:[*description*]>
<meta name="description" content="[*description*]" />
<@ENDIF-->
上記のように記述すると、投稿画面上の[*description*]フィールドに文字列が入力されている場合のみ、出力を行ないます。
<!--IF:[*content:remove_html:count_characters:lt(300)*]>
この記事を読むのにかかる時間:1分以内
<@ELSE>
この記事を読むのにかかる時間:1分以上
<@ENDIF-->
モディファイアを用いると高度な判定が可能です。
MODXのテンプレートワークは基本的に、テンプレート内で条件分岐が必要な場合は、スニペットコールという形で完全にカプセル化を行なうことになっています。それだと、条件が少し違うだけでもスニペットを別途に作ったり、既存のスニペットを改造したり、複雑なモディファイア記述を行なったりする必要があり、場合によっては管理が煩雑になります。そのような場合は@IF文を用いて、テンプレートを見通しよく維持することができます。
<!--@MODX:MODXタグ-->
これを記述したテンプレートをブラウザでプレビューした場合、HTMLコメントとして解釈されるため表示されません。
<!--@MODX:
<ul>
[[Ditto?
&tpl='@CODE:<li><a href="[+url+]">[+pagetitle+]</a></li>'
]]
</ul>
-->
スニペットコールを記述した例。ブラウザでプレビューした場合、何も表示されません。
<!--@IGNORE:BEGIN-->~<!--@IGNORE:END-->
先述のタグとは逆に、これを記述したテンプレートをブラウザでプレビューした場合、@IGNORE:BEGIN節から@IGNORE:ENDまでの区間は、ブラウザでは表示されますが、MODX側では無視されます。