コメントタグ

ブラウザでプレビューする際に都合がいいように、下記の記法は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側では無視されます。

PR

  • KAGOYA
  • ASP at AKIHABARA Japan
  • CMS AWARDS 2007 Winner
ページトップへ