このサイトでは、あるカテゴリーのエントリー数が400を越えてしまうので、年ごとに別々のカテゴリーをたてていた。だがそうするとカテゴリー数が増えてみにくくなってしまう。ジレンマだ。どうしようかと考えているときに知ったのが、MovableType 3.1ではサブカテゴリーというカテゴリー間の階層構造が導入されるというニュースだ。
この実装を担当しているのは、David Raynesという現在Subcategoriesというプラグインを開発している人なので、その仕様がそのままとりこまれると考えてよさそうだ。先取りして試してみることにした。
最初に考えたのは、全体を束ねるスーパーカテゴリーを新設して、その下に年ごとのカテゴリーをぶらさげる方法だ。だが、それだとスーパーカテゴリーの下にはひとつもエントリーが作成されないということになる。MovableTypeでは直下にひとつもエントリーが存在しないと、カテゴリーアーカイブは正常に作成されないのだ。もちろん無理矢理エントリーをいれることはできるが美しくない。
そこで考えたのが、ある年のカテゴリーを翌年のカテゴリーの下にどんどんぶらさげていく方法。つまり、2003年のカテゴリーは2004年のサブカテゴリーとなり、2002年のカテゴリーは2003年のカテゴリーのサブカテゴリーとなる。MainIndexからは最上位、つまり最新の年のカテゴリーアーカイブにリンクをはり、各カテゴリーアーカイブでは、自分以下のサブカテゴリーすべてとひとつ上位のカテゴリーのアーカイブにリンクをはる。この方法の利点は、年がかわってカテゴリーがふえても、作り直すカテゴリーアーカイブは直近のひとつだけでいいことだ。
MainIndexテンプレートのカテゴリー一覧は次のように記述している。
<MTTopLevelCategories>
<a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryCount$>"><$MTCategoryLabel$></a>
</MTTopLevelCategories>
カテゴリーアーカイブテンプレートの親子関係のリンクは次のように記述している。
<MTHasParentCategory>
<h2>親カテゴリー</h2>
<ul>
<MTParentCategory>
<li>
<a href="<$MTCategoryArchiveLink$>"><MTCategoryLabel></a>
</li>
</MTParentCategory>
</ul>
</MTHasParentCategory>
<MTHasSubCategories>
<h2>サブカテゴリー</h2>
<ul>
<MTSubCategories>
<li>
<a href="<$MTCategoryArchiveLink$>"><MTCategoryLabel></a>
</li>
<MTSubCatsRecurse>
</MTSubCategories>
</ul>
</MTHasSubCategories>

コメントする