「逆・それPlu」──それ MT標準でできるよ

シェアする

[Amazon Search](http://www.drk7.jp/MT/archives/000366.html “Amazon Search β3 公開 :: Drk7jp”)でお世話になっているdrkさん(ありがとうございます!)の[MT でカテゴリ別に楽天ランキングを表示する方法 :: Drk7jp](http://www.drk7.jp/MT/archives/001134.html “MT でカテゴリ別に楽天ランキングを表示する方法 :: Drk7jp”)を読んで思ったこと。
>さて、当然ながら MT とか使っていたらカテゴリ毎に違った広告を表示したくなります。これを実現するには意外と簡単。
>
>「[MT正規表現プラグイン MT Regex Plugin](http://www.drk7.jp/MT/archives/000827.html “Movable Type の正規表現プラグイン :: Drk7jp”)」さえインストールしてしまえばいいんです。
>
>[MT でカテゴリ別に楽天ランキングを表示する方法 :: Drk7jp](http://www.drk7.jp/MT/archives/001134.html “MT でカテゴリ別に楽天ランキングを表示する方法 :: Drk7jp”)
「逆・それ plu
──つまり、それはPluginなしでできますよ、という。


#### どないすんねん?(何語?)
たとえば、このようなカテゴリィ構成だったとします。
* 本
* 小説
* マンガ
* 週刊少年ジャンプ
* とっても大人向けのマンガ
* (以下省略)
「本」という親カテゴリィの下に「小説」と「マンガ」という子カテゴリィがある。「マンガ」カテゴリィの下には「週刊少年ジャンプ」と「とっても(ry」という孫カテゴリィが──という構成。
drkさんの提案する、Pluginを使うテンプレートの場合、「本」カテゴリィ配下のカテゴリィすべてに同じ広告を表示したい、というときに、少し困ります。何が困るかというと、こんな感じに記述が長くなるわけです。

<MTIfMatches var="ArchiveCategory" pattern="m/(本|小説|マンガ|週刊少年ジャンプ|とっても大人向けのマンガ)/">
(「本」カテゴリィ向けの広告を出すスクリプト)
</MTIfMatches>

また、サブカテゴリィの名前を変更したときも、テンプレートの更新が必要です。
#### 逆・それPlu
Plugin無しで記述する場合は、たとえば、こう。

<MTIfIsDescendant parent="本">
(「本」カテゴリィ向けの広告を出すスクリプト)
<MTElse>
(「本」以外のカテゴリィ向けの広告を出すスクリプト)
</MTElse>
</MTIfIsDescendant>

──シンプルです。
`MTIfIsDescendant`タグの説明は、下記の通りです。
>現在のカテゴリーが、指定したカテゴリーの子孫であるかどうかを判定する条件タグ(たとえば、最上位のカテゴリーから現在のカテゴリーまでの間に、指定したカテゴリーが存在するかどうかを判定します)。
>[Movable Type 3.2 マニュアル – テンプレート・ タグ](http://www.sixapart.jp/movabletype/manual/3.2/mtmanual_tags.html#categoryrelated_tags “Movable Type 3.2 マニュアル – テンプレート・ タグ”)
──なんだかよく解らないですが、まぁ、

<MTIfIsDescendant parent="マンガ">
(「マンガ」カテゴリィ向けの広告を出すスクリプト)
</MTIfIsDescendant>

と記述した場合、「本」カテゴリィには適用されないわけです。
なぜにゃらば!! 「本」カテゴリィは「マンガ」カテゴリィの子孫──つまり*下位*ではなく*上位*にあるからです。試してないけど(©[(O)](http://as-is.net/blog/ “Ogawa::Memoranda”))。
`MTIfIsAncestor`というタグもあって、`MTIfIsDescendant`の逆の働きをする、らしいです。ためしてn(ry
#### MTのタグって
こんな記事を書いておいてなんですが、結局、自分の慣れた方法が一番だと思います。プラグインで書く方法が自分に合っているなら、それでもいいでしょう。
それにしても──。
drkさんのようにMTプラグインをバリバリ使いこなしている人でも、`MTIfIsDescendant`タグがパッと出てこなかった──ということだと想像。それは要するに──MTは全部を把握することが困難なくらいに巨大なツールになってしまった、ということでは。
自分は[caramel*vanilla ≫ [MT3.3]BigTemplateWindow 日本語版](http://caramel-tea.com/2006/08/bigtemplatewindow33/ “caramel*vanilla ≫ [MT3.3]BigTemplateWindow 日本語版”)で公開されているBigTemplateWindow(MT3.2版)でタグ一覧をダラダラ流し見しているときに、偶然`MTIfIsDescendant`を見つけました。
──ちょっと、「遊び道具」にしては大きすぎるようになってきたな、MTって(ぼそっ)。
#### 参考
「それ plu」を初めて知ったのは[Transformer 機能を利用したプラグインで管理画面をカスタマイズ – 2xup.org](http://2xup.org/log/2006/07/03-2030 “Transformer 機能を利用したプラグインで管理画面をカスタマイズ – 2xup.org”)。
#### この記事のタグ(偽)
[書いていたら頭が痛くなってきた][脱線多すぎの記事][試してないメソッド]