カテゴリーごとにページ内コンテンツを制御するMTIfCategory
MTのバージョン3.3からいくつかMT独自のタグ、テンプレートタグが追加されています。中でも有用性の高いものとして
<MTIfCategory>
というタグがあります。これは「もし○○というカテゴリーの場合には」と、カテゴリーごとに条件判断をするタグです。
たとえばショップサイトで「イチオシ商品というカテゴリーのエントリーには、『イチオシ商品』というロゴ画像を入れたい」というとき、
<MTIfCategory name="イチオシ商品">
<img src="ichioshi-logo.gif" />
</MTIfCategory>
とすると、「イチオシ商品」カテゴリーのページにだけ画像が表示され、他のカテゴリーのページには表示されません。このタグはカテゴリー・アーカイブにもエントリー・アーカイブにも使えます。
MTで普通のサイトを作る時のやっかいな点の一つは、カテゴリーごとに表示内容を変えにくいところです。それを補えるこのタグは、結構重宝することと思います。
が・・・
▼ 2つのプラグインでさらにパワーアップ!
3.3のMTIfCategoryにはいくつか欠点、というか不便な点があります。
まずカテゴリーが一つしか指定できないこと。「イチオシ商品と今週のオススメの二つのカテゴリーに画像を入れたい」といったことができません。<MTIfCategory>を二回記述すればできますが。
それから「このカテゴリーだけ表示を外したい」という逆パターンができません。
カテゴリーが10個あって9個のカテゴリーには表示させたいが、残る一個だけ表示させたくないという場合は、<MTIfCategory>の条件文を9回書かないとならないんです。こいつはメッチャ面倒。
で、実はこれらの弱点を補えるプラグインがあります。
実はこのMTIfCategoryというのは、以前からプラグインとして提供されていたんです。それが3.3で標準装備されたんですが、なぜか機能が縮小されてしまいました。
元のMTIfCategoryプラグインは、<MTIfCategory>だけでなく、逆の
<MTIfNotCategory>
というタグも使えます。「もしカテゴリーが○○でない場合は」というケースですね。
Googleアドセンスを張ったサイトで、「コンテンツ量が足りません」という恐怖の警告をGoogleからもらったことのある方もいらっしゃると思いますが(笑)、たとえばリンク集カテゴリーのページなど、コンテンツ量が少なめのカテゴリーのページは、
<MTIfNotCategory name="リンク集">
アドセンスのソース
</MTIfNotCategory>
としておくと、リンク集カテゴリーにはアドセンスが表示されません。
もうこれでGoogleからの警告も怖くないざーますですわね、奥さま!(笑)
さらにもう一つ、MTregexというプラグインを導入すれば、カテゴリーが複数指定できるようになります。
書き方はこうなります。
<MTIfCategory pattern="/オススメ|イチオシ/">
このように、クオーテーションマーク「"」の内側にスラッシュ「/」を入れて、カテゴリー名を半角の縦線で区切ります。
この例だと「オススメ」と「イチオシ」の2つのカテゴリーだけに、同じソースが挿入できます。
もちろん<MTIfNotCategory>と組み合わせて、AとCとFのカテゴリーに属するページには○○を入れて、BとEのカテゴリーに属するページの場合は△△を非表示にして、など、細かい制御ができるようになります。
▼ さてこの2つのプラグインのお値段は!?(笑)
・・・って通販やってんじゃないんですよ、奥さん!(笑)
もちろんフリーです(^^) 入手先はこちら。
それぞれmtcatx-1_5.zip, mtregex-1_61.zipというzipファイルがありますので、ダウンロードして解凍して下さい。
インストール方法は、MTIfCategoryの方は二つのファイル、
■catx.pl → 「plugins」フォルダ内にアップロード
■「catx.pm」 → 「extlib」フォルダ内に「bradchoate」というフォルダを作成し、そこにアップロード
MTregexの方は、三つのファイルが出て来ますので、
■regex.pl → 「plugins」フォルダへアップロード
■regex.pmとpostproc.pm → 先ほど作成した、「extlib」フォルダ内の「bradchoate」フォルダへアップロード
ちなみに「bradchoate」というのはこのプラグインの作者の名のようです。
フォルダ名を間違えると動きません。作者がヘソを曲げるから・・・ではないですが(笑)、ご注意ください。
ちなみにMTregexは、本来は正規表現を扱えるようにするプラグインで、別に<MTIfCategory>に特化したものではありません。正規表現がわかる人ならもっといろんな使い方ができると思います。
ちなみに私はわかりませんが(^^;
それから正規表現を扱うせいだと思いますが、Shift-JISでインストールしたMTで、日本語でカテゴリー名を付けている場合にはMTregexは動作しないことがあるようです。この点もご注意ください。
★この記事をSEO bookmarkに登録 ⇒
カテゴリ
MTプラグイントラックバック(0)
このブログ記事を参照しているブログ一覧: カテゴリーごとにページ内コンテンツを制御するMTIfCategory
このブログ記事に対するトラックバックURL: http://www.kowaza.net/sys/mt-tb.cgi/7
困っていたのでとても助かりました。
ありがとうございます☆
こんにちわ。
ご紹介のMtregexをディレクトリの間違いなくインストールして、表示させたい場所に「<MTIfCategory pattern="m/(カテゴリ名|カテゴリ名)/i">」を挿入させましたが、別のカテゴリページでも表示されるようになってしまいました。
そこで質問なのですが、
・MT4.23でも動作するのでしょうか?
・MTIfCategoryは「label」もしくは「name」が必須となっており、再構築の際のエラーがでます。何らかの対策は何かありますか?
・peatternの「m/( )/i」は他のサイトで指定されていました。ちなみに外した状態でも試しましたが、うまくいきませんでした。これは関係ありますか?
MT4.23、UTF-8で構築しています。
よろしくお願いします。
名無しさんこんにちは。
> MT4.23でも動作するのでしょうか?
4.23では使えなくなってましたね。
お書きになられたとおりIfCategoryはlabelかnameが必須になってしまいましたし。
MTは4.1、4.2でタグが拡張され、regexの正規表現や複雑な条件分岐処理がネイティブタグだけでできるようになってますので、こういったカテゴリごとの処理も、プラグインは使わず、ネイティブタグの条件分岐で行った方がいいと思います。
解説までしていくとちょっと大変なので(^^;、とりあえずサンプルソースを書いておきます。
■カテゴリーテンプレートでカテゴリ別の処理
<$mt:CategoryLabel setvar="cat_label"$>
<mt:If name="cat_label" like="対象カテゴリ名1|対象カテゴリ名2">
表示させたい内容の記述
</mt:If>
■エントリーテンプレートでカテゴリ別の処理
<$mt:EntryCategory setvar="ent_cat">
<mt:If name="ent_cat" like="対象カテゴリ名1|対象カテゴリ名2">
表示させたい内容の記述
</mt:If>
likeの中にカテゴリ名を入れてください。複数入れる場合は半角の「|」で区切ります。
これで試してみてください。