SuperSortプラグインでカテゴリアーカイブにサブカテゴリの記事も出力する

先日、SuperSortプラグインに対し、以下のようなご質問をいただきました。

  • カテゴリアーカイブで、サブカテゴリも含めて記事を出力したい
  • 記事はカテゴリごとにまとめて、カテゴリごとに何らかの文章(カテゴリ名等)を出力したい

上記のようなことは、タグの組み合わせを工夫すれば可能です。
その方法を解説します。

MTSubCategoriesタグとの組み合わせ

サブカテゴリの一覧を出力するタグとして、MT標準のMTSubCategoriesタグがあります。
このタグをカテゴリアーカイブテンプレート内で使うと、各カテゴリのサブカテゴリを順次出力することができます。

例えば、カテゴリの構造が以下のようになっているとします。

  • カテゴリA
    • カテゴリA-1
    • カテゴリA-2
    • カテゴリA-3
  • カテゴリB
    • カテゴリB-1
    • カテゴリB-2
    • カテゴリB-3

この状況で、カテゴリAのカテゴリアーカイブページを再構築するとします。
また、カテゴリアーカイブテンプレートにMTSubCategoriesタグが含まれているとします。
すると、このMTSubCategoriesタグでは、カテゴリAより下の階層(カテゴリA-1など)のカテゴリの一覧が出力されます。

さらに、MTSubCategoriesタグに「include_current="1"」のモディファイアを加えると、下の階層のカテゴリに加えて、そのカテゴリ自身も出力することができます。
例えば、カテゴリアーカイブテンプレートに<MTSubCategories include_current
="1">のタグが含まれているときに、カテゴリAのカテゴリアーカイブページを再構築するとします。
この場合、このMTSubCategoriesタグでは、カテゴリAと、それより下の階層のカテゴリの一覧が出力されます。

MTSubCategoriesタグとMTSortedEntriesタグを組み合わせる

MTSubCategoriesタグのブロックの中で、MTSortedEntriesタグを使うことができます。
この性質を利用すれば、冒頭にあげたようなカテゴリアーカイブを出力することができます。

具体的には、カテゴリアーカイブテンプレートの中で、ブログ記事一覧を出力する部分を、以下のようにします。

<MTSubCategories include_current="1" sort_method="SortCatFld::Sort">
  カテゴリの情報を出力する処理
  <MTSortedEntries>
    カテゴリ内の個々のブログ記事を出力する処理
  </MTSortedEntries>
  <MTSubCatsRecurse>
</MTSubCategories>

例えば、MT 4.2の標準テンプレートセットの場合、カテゴリアーカイブテンプレートのブログ記事一覧の部分を、以下のよう変えると良いでしょう。

<MTSubCategories include_current="1" sort_method="SortCatFld::Sort">
  <div>カテゴリ「<MTParentCategories glue=":"><MTCategoryLabel></MTParentCategories>」の記事</div>
  <MTSortedEntries>
    <$MTInclude module="ブログ記事の概要"$>
  </MTSortedEntries>
  <MTSubCatsRecurse>
</MTSubCategories>