MT でサブカテゴリ以下も全て表示させるには?

シェアする

MT3.11 からサブカテゴリを利用することができるようになりました。これは、要するに [SubCategories](http://www.rayners.org/2004/03/subcategories_v04.php “David Raynes: SubCategories v0.4”) プラグインと同じ機能のようです。
標準のテンプレートではサブカテゴリの機能がうまく動作しないので、テンプレートを変更する必要があります。
カテゴリのリスト表示などで、下記のように表示するには、SubCategories プラグインと同じタグを利用する必要があります。
* カテゴリ A
* カテゴリ B
* カテゴリ C (B のサブカテゴリ)


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




これで、カテゴリーのリスト表示は OK です。
### 親カテゴリをクリックすると、子(孫)カテゴリも表示
さて、このままでもいいですが、カテゴリのリストが下記のような状態だったとします。“()”の中は、エントリの数です。
* カテゴリ A (2)
* カテゴリ B (4)
* カテゴリ C (6)
カテゴリ A をクリックすると、当然“*2*つのエントリ”が表示されます。では、カテゴリ B をクリックすると、いくつのエントリが表示されるでしょうか ?
正解は“*4*つです”。つまり、カテゴリ B 直下のエントリしか表示されないのです。
もし、カテゴリ B をクリックすると“カテゴリ B (*4*) + カテゴリ C (*6*)”の合計である“*10* 個のエントリー”を表示するには、Category Archive テンプレートを下記のように変更する必要があります。

となっているところを、

に変更し、リビルドするだけで OK です。テキストエディタの置換機能を使えば、一回で終わりますね(MTEntries → MTEntriesWithSubCategories)。
### カテゴリページの URL もサブカテゴリっぽく
ウェブログの設定 > アーカイブの設定 > 「アーカイブ・ファイルのテンプレート 」の Category Archive のパスを

に変更すると、上記の例の場合は
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 はクリックできません。
少々不便ですが、*一つでもエントリがあればインデックスファイルが作成される*ので「このカテゴリの説明」といったエントリを作成すればいいでしょう。
### 参考にさせていただいたページ
* [“SubCategoriesを極める”: Unmovabletype](http://unmovabletype.org/archives/2004/08/subcategories.html ““SubCategoriesを極める”: Unmovabletype”)
下記の SubCategories プラグインの説明を日本語化……している途中なのが残念。しかし*レイアウトが見易い*ので、こちらを主に参考にしました。
* [SubCategories – David Raynes Plugin Wiki](http://wiki.rayners.org/plugins/SubCategories#head-f7be922b724d4f831ad22078632bac968bdaaed1 “SubCategories – David Raynes Plugin Wiki”)