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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

そうのひとりごと

© 2019 PAOLOG