MODx用条件分岐スニペット: StartIf & EndIf

StartIf & EndIf は、テンプレート変数等の値により表示を制御(ON/OFF)するためのスニペットです。

テンプレートエンジンによくある、例えば、Smarty なら {if}~{/if}、HTML_Template_Flexy なら {if:}~{end:} のような、 変数の値によって、表示したり、表示しなかったりを切り替える、そういった機能が欲しくて作りました。

こんな使い方ができます。
例1
要約(introtext)が入力されていたら見出しとともに表示する。
[!StartIf? &var=`introtext`!]
<h2>要約</h2>
[*introtext*]
[!EndIf &var=`introtext`!]
例2
長いタイトル(longtitle)が入力されていなければ、
代わりにタイトル(pagetitle)を表示する。
[*longtitle*]
[!StartIf? &not=`1` &var=`longtitle`!][*pagetitle*][!EndIf &var=`longtitle`!]
例3
カスタムテンプレート変数「block1」「block2」のどちらかが入力されていれば、
見出しを表示する。
[!StartIf? &var=`block1,block2`!]
<h2>見出し</h2>
[!EndIf &var=`block1,block2`!]
[*block1*]
[*block2*]
例4
カスタムテンプレート変数「number」が数字の場合、見出しとともに表示する。
[!StartIf? &var=`number` &regex=`/^\d+$/`!]
<h2>番号</h2>
[*number*]
[!EndIf &var=`number`!]
例5
要約(introtext)が未入力なら、見出しとともにコメントアウトする。
(途中にコメントタグが入っている場合は使えない)
[!StartIf? &var=`introtext` &off_st=`<!-- ` &off_ed=` -->`!]
<h2>要約</h2>
[*introtext*]
[!EndIf &var=`introtext`!]

手軽に表示のON/OFFを切り替えたいという場合には、結構使えるかと思います。
また、オプションパラメータも色々ありますので、アイディア次第で様々な使い道があるかもしれません。
ただ、MODxには、基本的に、スニペットからページの内容を制御する方法はありませんので、 ちょっと裏ワザ的な仕組みを使っていたりします。
(詳細は、プログラム中にコメントで記載しています。)

ダウンロード&インストール
  1. 下記のリンクから2ファイルを取得(Windowsなら右クリックで「対象をファイルに保存」)します。
  2. MODxの管理画面「リソース管理」の「スニペット」で新たにスニペットを作成します。 ( StartIf と EndIf、それぞれ 2~5 の作業を行なって、計2つのスニペットを作成します。)
  3. スニペットコード欄には、ファイルの内容をそのまま全てコピーして貼り付けます。
  4. スニペット名欄には、「StartIf」や「EndIf」を入力します。 説明欄には、「テンプレート変数等の値により表示を制御(ON/OFF)する。」等を入力します。 (プロパティ等も、必要に応じて入力します。)
  5. 作成したスニペットを保存します。
以上で、インストールは終了です。 あとは、テンプレート等の表示を切り替えたい箇所にスニペットタグを埋め込むだけです。
バージョン1.01(2008-04-11)
複数のテンプレート変数に対応(OR条件)
バージョン1.00(2007-12-11)
免責
  1. 本サイトで公開されている情報、プログラム等を利用した場合に発生するあらゆる障害に関して、 本サイト運営者、各リソース提供者は責任を負いません。
  2. 情報、プログラム等の不都合に対して本サイト運営者、各リソース提供者は その問題箇所の訂正やアップデートの責務を負いません。