先日、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>




![Hardcore Will Never Die, But You Will [Bonus Tracks] Hardcore Will Never Die, But You Will [Bonus Tracks]](http://userserve-ak.last.fm/serve/34s/67192634.jpg)





コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。
壱さん
サブカテゴリの記事の出力方法を記載いただきありがとうございます。
早速 MTSubCategories を使ってみました。
私はページの最初に、該当カテゴリとそのサブカテゴリに含まれる全エントリと全コメントの件数を表示したいのですが、
MTSubCategories を使ってうまく表示することができません。
<MTSubCategories><$MTEntriesCount$> ...
とすると、各サブカテゴリごとのエントリー数が表示されてしまいます。
MTEntriesWithSubCategories を使った場合には
<MTEntriesWithSubCategories>
<MTEntriesHeader><$MTEntriesCount$></MTEntriesHeader>...
で取得することができたのですが・・・。
同じようにやれば取得できるのでしょうが、
MTSubCategories と MTEntriesWithSubCategories で
カテゴリ内を2回なめる(再構築時間が増えてしまう?)
のはできれば避けたいのです。
MTSubCategories 内でエントリおよびコメントの総数を
取得する方法はありますでしょうか?
プラグインには関連しない質問になってしまい
申し訳ありませんが、お願いいたします。
壱さん
サブカテゴリの記事の出力方法を記載いただきありがとうございます。
早速 MTSubCategories を使ってみました。
私はページの最初に、該当カテゴリとそのサブカテゴリに含まれる全エントリと全コメントの件数を表示したいのですが、
MTSubCategories を使ってうまく表示することができません。
<MTSubCategories><$MTEntriesCount$> ...
とすると、各サブカテゴリごとのエントリー数が表示されてしまいます。
MTEntriesWithSubCategories を使った場合には
<MTEntriesWithSubCategories>
<MTEntriesHeader><$MTEntriesCount$></MTEntriesHeader>...
で取得することができたのですが・・・。
同じようにやれば取得できるのでしょうが、
MTSubCategories と MTEntriesWithSubCategories で
カテゴリ内を2回なめる(再構築時間が増えてしまう?)
のはできれば避けたいのです。
MTSubCategories 内でエントリおよびコメントの総数を
取得する方法はありますでしょうか?
プラグインには関連しない質問になってしまい
申し訳ありませんが、お願いいたします。
タグが消えてしまいましたので、一部訂正します。
<MTSubCategories><$MTEntriesCount$> ...
とすると、各サブカテゴリごとのエントリー数が表示されてしまいます。
MTEntriesWithSubCategories を使った場合には
<MTEntriesWithSubCategories><MTEntiresHeader><$MTEntriesCount$>...
で取得することができたのですが・・・。
また、SubCategories で MTParentCategories を使った場合、
トップレベルカテゴリまでたどるのではなく、
元のカテゴリまでのたどる方法はないでしょうか。
>林さん
こんにちは。
ご質問の前半(ブログ記事数/コメント数の出力)について、記事を書きました。
http://www.h-fj.com/blog/archives/2008/12/22-152154.php
後半(MTParentCategoriesタグ)については、明日記事にします。
おかげさまでうまくできました。
明日の MTParentCategories タグについても
楽しみにしております。
本当にありがとうございました。