« カテゴリごとに違う内容を表示する[MTIfCategory] | メイン | 特定のカテゴリを表示・非表示[MTFilterCategories] »

カテゴリごとに違う内容を表示する[MTIfIsDescendant]

「カテゴリAではモジュールAを表示させたいが、カテゴリBではモジュールBを表示させたい。そのどちらでもなければモジュールC」といった場合、MTIfIsDescendantで実現できます。
例えば、カテゴリごとに違うレイアウトにしたい場合に使えると思います。

モジュールAとモジュールBとモジュールCをに登録しておいて、アーカイブのテンプレートをこのようにします。

<例1>カテゴリAならモジュールAを表示。カテゴリBではモジュールBを表示。そのどちらでもなければモジュールC。
-----------------------------------------------

<MTIfIsDescendant parent="カテゴリA ">
<$MTInclude module="モジュールA"$>
<MTElse>
<MTIfIsDescendant parent="カテゴリB">
<$MTInclude module="モジュールB"$>
<MTElse>
<$MTInclude module="モジュールC"$>
</MTElse>
</MTIfIsDescendant>
</MTElse>
</MTIfIsDescendant>

-----------------------------------------------

<例2>カテゴリAならモジュールAを表示。カテゴリBではモジュールBを表示。特に何も表示しない。
-----------------------------------------------

<MTIfIsDescendant parent="カテゴリA ">
<$MTInclude module="モジュールA"$>
</MTIfIsDescendant>
<MTIfIsDescendant parent="カテゴリB">
<$MTInclude module="モジュールB"$>
</MTIfIsDescendant>

----------------------------------------------

サブカテゴリーも変える場合は、階層が下のものから条件分岐させると上手くいきます。
MTIfIsDescendant タグは、「現在のカテゴリーが、指定したカテゴリーの子孫であるかどうかを判定する条件タグ」だそうです。
例えば、上記の例の「カテゴリA」カテゴリーのサブカテゴリーに「カテゴリD」があるとします。
<MTIfIsDescendant parent="カテゴリA ">...と最初にしてしまうと、「カテゴリA」の子孫である「カテゴリD」にもマッチしてしまう為、「階層が下のものから条件分岐」となるわけです。

-----------------------------------------------

<MTIfIsDescendant parent="カテゴリD ">
<$MTInclude module="モジュールD"$>
<MTElse>

<MTIfIsDescendant parent="カテゴリA ">
  :
</MTIfIsDescendant>

</MTElse>
</MTIfIsDescendant>

-----------------------------------------------

トラックバック

このエントリーのトラックバックURL:
http://granduo.net/mt/mt-tb.cgi/16

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2007年05月06日 16:53に投稿されたエントリのページです。

ひとつ前の投稿は「カテゴリごとに違う内容を表示する[MTIfCategory]」です。

次の投稿は「特定のカテゴリを表示・非表示[MTFilterCategories]」です。

他にも多くのエントリがあります。メインページアーカイブページも見てください。

Powered by
Movable Type