はじめに
先日、MODx-2.2.0-rc3がリリースされ、2.2.0-plのリリースも間近となってきました。また2011年も年の瀬を迎え、これまで以上に早い時の流れを感じる今日この頃です。
今回は、前回の終わりに少し触れた、Ifというスニペットを紹介したいと思います。スニペット名から想像は容易かと思いますが、これは条件に応じて表示などを変更するための便利なスニペットです。
使い方としては、テンプレートと組み合わせて、「トップページであれば見出しを表示しない」「商品ページでは、より多くの広告を表示させる」といった制御が可能となります。
導入とテスト
すでに解説の必要性はないでしょうが、Ifスニペットも「システム」→「パッケージマネージャー」より導入を行います。執筆時点でのスニペットの最新バージョンは1.1です。コードが非常に軽量であるため、他スニペットと比較すればカスタマイズも容易なのが特徴です。
スニペットのドキュメントの例から使い方は一目瞭然かもしれませんが、
という記述をテンプレート中に行っておけば、トップページでは「トップページです。」と表示され、それ以外のページでは「トップページではありません。」と表示される、想像通りで当たり前の結果となります。
Ifスニペットで有効な演算子
ドキュメントによると、Ifスニペット中では次のような演算子による記述が可能となっています。
表1 演算子と意味
演算子 | 意味 |
!=,neq,not,isnot,isnt,unequal,notequal | 条件がマッチしない場合 |
==,=,eq,is,equal,equals,equalto | 条件がマッチする場合 |
<,lt,less,lessthan | 条件が○○未満である場合 |
>,gt,greater,greaterthan | 条件が○○を超える場合 |
<=,lte,lessthanequals,lessthanorequalto | 条件が〇〇以下である場合 |
>=,gte,greaterthanequals,greaterthanequalto | 条件が○○以上である場合 |
isempty,empty | 条件が空である場合 |
!empty,notempty,isnotempty | 条件が空でない場合 |
isnull,null | 条件がnullである場合 |
inarray,in_array,ia | 条件がカンマ区切りのリスト中に見つかった場合 |
あまり全ての条件を記述する機会はないと思いますが、無理やりな例を挙げるとすれば、
という記述を行うことで、複数且つ特定のページ、ここではprofile.htmlとlink.htmlを表示する場合に限定して文字や画像による広告を掲載することができます。
少し実用的な使い方
なかみつ園では、次図のように、基本的にどのページでもコンテンツの先頭部分に<h1>タグでリソース名を表示しています。
しかし、トップページでは、このような表示を行っていません。Ifスニペットを用いてこれを実現するとすれば、テンプレート中の[[*content]]の直前付近に次のような記述を行っておきます。
見栄えを良くするために、<h1>タグの装飾はcssファイルなどで別途行うようにしてください。ちなみに、なかみつ園では、
のような、いわゆる「パンくずリスト」を実現するために、Breadcrumbsというスニペットを利用しているのですが、このようなスニペットの呼び出しもIfスニペット中に含めることができますので、&thenや&elseの中に[[!スニペット名]]といった記述を行うだけで、全体の見栄えを切り替えることができるようになります。
終わりに
2011年最後の記事が単純なIfスニペットの紹介で終わってしまいましたが、Ifスニペットは軽量ながらも個人サイト、商用サイト、どのようなサイトのデザインにも効力を発揮する強力なツールです。使いこなすことで、コーディングの手間を減らしつつ、効果的なデザインを目指してみましょう。
2012年もMODxとなかみつ園をよろしくお願いいたします。