MT条件分岐:親カテゴリーと子カテゴリーで表示を変える方法

通常、サブカテゴリー(子カテゴリー)ページのテンプレートは、その直接の親カテゴリーと同じテンプレート(カテゴリーアーカイブ)を元に作成されます。しかし、親カテゴリーと子カテゴリーのページデザイン(レイアウト)を違ったものにしたいときがあります。
そこで、今回は同じカテゴリーテンプレートをつかって親カテゴリーと子カテゴリーの表示内容を変更できるようなテンプレートの使い方を紹介します。

親カテゴリーと子カテゴリーからなる2階層構造の場合

たとえばこのサイトでは親カテゴリーには、そのカテゴリーに属する子カテゴリーのリストをメインに表示しています。また子カテゴリーではそのカテゴリーに属するエントリーを指定数だけ表示しています。

このように親カテゴリーと子カテゴリーとで表示する内容を変えるためには次のMTテンプレートタグを利用します。

MTHasSubCategories
現在のカテゴリーにサブカテゴリーが登録されているときだけ実行する条件タグです。

MTHasNoSubCategories
現在のカテゴリーにサブカテゴリーが存在しないときだけ実行する条件タグです。

これらのMTタグの使い方は次のような感じになります。

この使い方は子カテゴリーをもつの2階層構造までに対応しています。孫カテゴリーをもつ場合の記述例は次に書いています。

このようにするとテンプレートの中身は長くなってしまいますが、親と子のデザインを変えることができます。この方法とは別にMTHasSubCategories(またはMTHasNoSubCategories)タグの中でMTElseをつかった条件分岐もできると思います。

孫カテゴリーまである3階層構造の場合 

サブカテゴリーの下にさらにサブカテゴリー(孫カテゴリー)を作っているような3階層のカテゴリー構造でもそれぞれデザインを変えたいというときはもうちょっと複雑になります。次のタグを使います。

MTHasParentCategories
現在のカテゴリーに親カテゴリーが存在されているときだけ実行する条件タグです。

MTHasNoParentCategories
現在のカテゴリーに親カテゴリーが存在しないときだけ実行する条件タグです。

3階層の場合は次のようにするといいかもしれません。これは試してないのでご了承ください。

こんな感じでしょうか?サブカテゴリーを持っているカテゴリーのなかでさらに親カテゴリーをもっているかどうかで条件分岐しています。

記憶が確かではないですが、この部分をモジュール化(Widget)してしまうとうまく動作しなかったような気がします。直接カテゴリーアーカイブテンプレートに埋め込むようにしたほうがいいかもしれません。

  • http://dor-project.com/blog/blog/movable_typemt/post_81.html DOR underground

    親カテゴリで子カテゴリ毎のエントリー一覧を表示させる

    親カテゴリのindexページの時は子カテゴリ毎のエントリー一覧を表示させ、子カテ…

  • 鉄腕たろう

    はじめまして。鉄腕たろうと名乗る者です。
    どうしてもやりたいことができず、ほとほと困っています。
    2カラムで作っているサイトの中で、あるサブカテゴリーを1カラムのレイアウトを変えたくて、色々な情報を試したり、様々なプラグインを入れたりしてきましたが全然思い通りになりません。
    私がド素人で説明の意味が理解できないためだと思います。

    助けていただけませんでしょうか?

    ・この「出力するテンプレートタグ」とはどういう事なのでしょうか?
    サブカテゴリー用に用意したCSSの出力ファイル名でしょうか?
    テンプレートってアーカイブとかメインページとかエントリーアーカイブとか複数ありますよね。
    その中のどの出力ファイル名をどのように記述すれば良いかがサッパリ分からないんです。
    ・それと、このタグはテンプレートのカテゴリーアーカイブに貼るだけで良いのでしょうか?

    おそらくとんでもなく低レベルな質問をしていて、だから説明することさえ面倒な内容なんだとは思います。
    だからお返事は難しいだろうな~とも想像しているんですが…でもダメもとで質問させて頂きました。
    ご好意に甘えるだけですので、無理ならば無視して頂いてかまいません。

そうのひとりごと

© 2017 PAOLOG