CMSのポテンシャルを引き出す─MODxで作る商用サイト

第21回 MODxとIfスニペット

この記事を読むのに必要な時間:およそ 1.5 分

はじめに

先日,MODx-2.2.0-rc3がリリースされ,2.2.0-plのリリースも間近となってきました。また2011年も年の瀬を迎え,これまで以上に早い時の流れを感じる今日この頃です。

今回は,前回の終わりに少し触れた,Ifというスニペットを紹介したいと思います。スニペット名から想像は容易かと思いますが,これは条件に応じて表示などを変更するための便利なスニペットです。

使い方としては,テンプレートと組み合わせて,⁠トップページであれば見出しを表示しない」⁠商品ページでは,より多くの広告を表示させる」といった制御が可能となります。

導入とテスト

すでに解説の必要性はないでしょうが,Ifスニペットも「システム」⁠⁠パッケージマネージャー」より導入を行います。執筆時点でのスニペットの最新バージョンは1.1です。コードが非常に軽量であるため,他スニペットと比較すればカスタマイズも容易なのが特徴です。

スニペットのドキュメントの例から使い方は一目瞭然かもしれませんが,

[[!If? 
   &subject=`[[*id]]` 
   &operator=`EQ` 
   &operand=`1` 
   &then=`トップページです。` 
   &else=`トップページではありません。` 
]]

という記述をテンプレート中に行っておけば,トップページでは「トップページです。」と表示され,それ以外のページでは「トップページではありません。」と表示される,想像通りで当たり前の結果となります。

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条件がカンマ区切りのリスト中に見つかった場合

あまり全ての条件を記述する機会はないと思いますが,無理やりな例を挙げるとすれば,

[[!If?
   &subject=`[[*alias]]`
   &operator=`in_array`
   &operand=`profile,link`
   &then=`ここは会社概要とリンクページのみに掲載する広告です`
   &else=`ここは一般の広告です`
]]

という記述を行うことで,複数且つ特定のページ,ここではprofile.htmlとlink.htmlを表示する場合に限定して文字や画像による広告を掲載することができます。

少し実用的な使い方

なかみつ園では,次図のように,基本的にどのページでもコンテンツの先頭部分に<h1>タグでリソース名を表示しています。

図1 リソース名表示の例

図1 リソース名表示の例

しかし,トップページでは,このような表示を行っていません。Ifスニペットを用いてこれを実現するとすれば,テンプレート中の[[*content]]の直前付近に次のような記述を行っておきます。

[[!If?
   &subject=`[[*id]]`
   &operator=`not`
   &operand=`1`
   &then=`<h1>[[*pagetitle]]</h1>`
]]

見栄えを良くするために,<h1>タグの装飾はcssファイルなどで別途行うようにしてください。ちなみに,なかみつ園では,

トップ >> 商品紹介 >> お茶

のような,いわゆる「パンくずリスト」を実現するために,Breadcrumbsというスニペットを利用しているのですが,このようなスニペットの呼び出しもIfスニペット中に含めることができますので,&thenや&elseの中に[[!スニペット名]]といった記述を行うだけで,全体の見栄えを切り替えることができるようになります。

終わりに

2011年最後の記事が単純なIfスニペットの紹介で終わってしまいましたが,Ifスニペットは軽量ながらも個人サイト,商用サイト,どのようなサイトのデザインにも効力を発揮する強力なツールです。使いこなすことで,コーディングの手間を減らしつつ,効果的なデザインを目指してみましょう。

2012年もMODxとなかみつ園をよろしくお願いいたします。

著者プロフィール

中満英生(なかみつひでお)

大学時代に出会ったSolarisがきっかけでUNIXの世界へ。その後ホスティングプロバイダ,データセンターで実務経験を積む傍ら,雑誌記事の執筆や技術セミナーの講師を務める。サーバ設定の他,セキュリティに関する著作や技術者エッセイも執筆経験あり。

コメント

コメントの記入