• 更新:
  • 投稿:
  • カテゴリィ:

MT3.11 からサブカテゴリを利用することができるようになりました。これは、要するに SubCategories プラグインと同じ機能のようです。

標準のテンプレートではサブカテゴリの機能がうまく動作しないので、テンプレートを変更する必要があります。

カテゴリのリスト表示などで、下記のように表示するには、SubCategories プラグインと同じタグを利用する必要があります。

  • カテゴリ A
  • カテゴリ B
    • カテゴリ C (B のサブカテゴリ)

カテゴリリストは、下記のようにします。

<MTSubCategories>
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<li>
<MTCategoryLabel>
<MTSubCatsRecurse>
</li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTSubCategories>

これで、カテゴリーのリスト表示は OK です。

親カテゴリをクリックすると、子(孫)カテゴリも表示

さて、このままでもいいですが、カテゴリのリストが下記のような状態だったとします。“()”の中は、エントリの数です。

  • カテゴリ A (2)
  • カテゴリ B (4)
    • カテゴリ C (6)

カテゴリ A をクリックすると、当然“2つのエントリ”が表示されます。では、カテゴリ B をクリックすると、いくつのエントリが表示されるでしょうか ?

正解は“4つです”。つまり、カテゴリ B 直下のエントリしか表示されないのです。

もし、カテゴリ B をクリックすると“カテゴリ B (4) + カテゴリ C (6)”の合計である“10 個のエントリー”を表示するには、Category Archive テンプレートを下記のように変更する必要があります。

<MTEntries> ... </MTEntries>

となっているところを、

<MTEntriesWithSubCategories> ... </MTEntriesWithSubCategories>

に変更し、リビルドするだけで OK です。テキストエディタの置換機能を使えば、一回で終わりますね(MTEntries → MTEntriesWithSubCategories)。

カテゴリページの URL もサブカテゴリっぽく

ウェブログの設定 > アーカイブの設定 > 「アーカイブ・ファイルのテンプレート 」の Category Archive のパスを

<MTParentCategories glue="/"><MTCategoryLabel dirify="1"></MTParentCategories>

に変更すると、上記の例の場合は

http://(MT のアーカイブパス)/CategoryA/
http://(MT のアーカイブパス)/CategoryB/
http://(MT のアーカイブパス)/CategoryB/CategoryC/

といった URL になります。

問題点

ちょっとした問題点があります。例えば、カテゴリのリストが下記の状態の場合です。

  • カテゴリ A (2)
  • カテゴリ B (0)
    • カテゴリ C (6)
    • カテゴリ D (8)

カテゴリ B をクリックすると、カテゴリ B,C,D の合計、14 個のエントリが表示される……はずですが、エントリが 0 の場合はインデックスファイルが作成されません。つまりこの場合、カテゴリ B はクリックできません。

少々不便ですが、一つでもエントリがあればインデックスファイルが作成されるので「このカテゴリの説明」といったエントリを作成すればいいでしょう。

参考にさせていただいたページ

[2] このページの一番上へ戻る