サブカテゴリー

| コメント(0) このエントリーを含むはてなブックマーク

このサイトでは、あるカテゴリーのエントリー数が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>

コメントする