お知らせ

Movable Type 5 Webサイト製作ガイドVolume 22010年4月19日

Movable Type 5 Webサイト製作ガイドVolume 2」を発売しました。
「Movable Type 5 Webサイト製作ガイドVolume 1」の続編で、変数等の応用的な機能や、ウェブサイトやテーマなどのMovable Type 5の新機能についてしっかり解説した書籍です。
Movable TypeでWeb製作をされている方などにお勧めです。
PDFによる販売で、当サイトでのみ購入できます(書店では購入できません)

他にも多数書籍を執筆しています。
こちらもぜひご覧ください。

MT4でカテゴリーアーカイブに全エントリーを出力する

| コメント(9) | トラックバック(0)

ゲストブックに以下のような投稿をいただきました。

MT4がリリースされ、早速新規インストールし、記事とコメントを読み込ませ、運用を開始しました。
アップグレードしなかったのは、新しいテンプレートを使ってみたかったからです。
ところが、カテゴリのリンクをクリックすると、MT4では、カテゴリ内の最新の10件しか表示されず、これまでのようなカテゴリ内の全ての記事を表示する方法が無いようなのです!
最新の10件だけではあまり意味が無いので、ぜひ以前のようにカテゴリ内の全記事を表示するようなカスタマイズ法を勉強したいのですが、記事にしていただけないでしょうか?

ということで、この件を調べてみました。

1.ブログ記事リストテンプレートを書き換える

Movable Type 4ではアーカイブの種類が増えていますが、複数のブログ記事(エントリー)が出力されるアーカイブは、すべて「ブログ記事リスト」というアーカイブテンプレートに基づいて出力されています。
このテンプレートの中に、以下のような部分があります。

<MTIf name="datebased_archive">
    <MTEntries>
<$MTEntryTrackbackData$>
<$MTInclude module="ブログ記事の概要"$>
    </MTEntries>
<MTElse>
        <MTEntries limit="auto">
<$MTEntryTrackbackData$>
<$MTInclude module="ブログ記事の概要"$>
        </MTEntries>
</MTIf>

この部分により、ブログ記事は以下のように出力されます。

  • 日付関係のアーカイブの場合は、<MTEntries>タグによって、そのアーカイブのすべてのブログ記事が出力されます。
  • それ以外のアーカイブの場合は、<MTEntries limit="auto">タグによって、メインページと同じく、標準では最新の10件のブログ記事が出力されます。

したがって、上記のリストにある「<MTEntries limit="auto">」を「<MTEntries>」に書き換えれば、カテゴリーアーカイブでも各カテゴリーの全ブログ記事が出力されるようになります。

2.ただしあまりお勧めしません

ここまでのように書き換えれば、これまで通りの動作になります。
しかし、書き換えることはあまりお勧めしません。

Blogを長く続けると、各カテゴリーのブログ記事の数が増えていきます。
となると、カテゴリーアーカイブに各カテゴリーの全てのブログ記事を出力するようにすると、再構築に時間がかかることになります。
この問題を避けるために、MT4ではカテゴリーアーカイブには全てのブログ記事を出力しないようになったのではないかと思われます。

また、MT4の標準設定では、カテゴリーアーカイブを月別に分割したページも出力されます。
MT4の標準テンプレートだと、カテゴリーアーカイブページのサイドバーには、月別カテゴリーアーカイブへのリンクも出力されます。
各カテゴリーの過去のブログ記事も読めるようにしたいのであれば、月別のカテゴリーアーカイブを利用することをお勧めします。

トラックバック(0)

トラックバックURL: http://www.h-fj.com/mt/mt-tb.cgi/1006.

コメント(スレッド2件,コメント9件)

コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。

No.1 hiro : (無題)

ゲストブックに この件について投稿した者です。
なるほど、一括出力もできないことはないけれど、今後は 「カテゴリーの月別分割」 を利用した方が良いわけですね。
たしかに、うちのブログも三年続き、最多のカテゴリーは 150件を超えましたし、いつまでも一括出力を続けられるものではないですね。
わかりやすい解説を迅速に記事にしてくださって ありがとうございました。
猛暑が続いていますが、お体を壊されないよう、これからも頑張ってください!

No.2 oscar : (無題)

こんにちは、壱さん。
私の勘違いかも知れないですが、MT4のデフォルトの動作(オプション指定なしの状態)が、設定画面で指定した件数になっていると思うのですが。
limit="auto"を無くしても、結果は同じになりませんか。

No.3  : (無題)

>oscarさん
こんにちは。

デフォルトの動作は、インデックステンプレートでは設定画面で設定した件数のエントリーが出力されますが、アーカイブテンプレートでは全件出力されます。

No.4 TAEKO : (無題)

初めまして。
いつも参考にさせていただいてます。

MT4からはカテゴリーアーカイブは設定画面で指定した件数になるように仕様変更されています。ベータ版で気が付いてsixapartに報告したところ、そのようにお返事いただきました。ですので、MT4では<MTEntries>のみではカテゴリーに全件表示させることはできません。<MTEntries lastn="9999">のように表示件数を指定してあげる必要があります(lastn="0"でもいけますね)。

なお、MT4で仕様変更された理由は壱さんの推測された通り、再構築時の負担を避けるためだそうです。カテゴリーアーカイブの過去ログを見るには月別カテゴリーを利用して下さいとのことでした。

No.5  : (無題)

>TAEKOさん
こんにちは。

oscarさんにTAEKOさんとツッコミが入ったので、「これはもしやダイナミックとスタティックで動作が違うのでは?」と思って、ダイナミックでの動作を見てみました。
するとそのとおりで、スタティックだとlimitを外せば全件出力になりましたが、ダイナミックだとlimitを外しても効果なしでした。
これはMT4の不具合というところでしょうか。

No.6 oscar : (無題)

なるほど、ダイナミックでの動作の違いですか。
確かに私はアーカイブはダイナミック・パブリッシングにしてますね。

インデックステンプレートでも、アーカイブインデックスは件数制限かかるみたいですよ。それともページ分割で試しているプラグインのせいかな?

No.7 TAEKO : (無題)

お返事ありがとうございます。
あらら、スタティックでは<MTEntries>だけで全件表示できるのですね。
もしかしたらバグレポートした時に説明が足りなくてどこが問題なのかが正しく伝わってなかったのかも…。
もう一度sixapartに問い合わせし直してみようと思います。

No.8 TAEKO : (無題)

たびたびすみません。
sixapartからお返事いただいたので報告を。

MT4では基本的にはカテゴリアーカイブは既定値分の表示しか出さないという仕様になっているが、デフォルトテンプレートで使われていないパターンのタグ(limit="auto"をなくして<MTEntries>のみで出力)を使う場合の動作の確認が不十分だったようだ、とのことだそうです。

この件に関しては他の方からも問い合わせが来ているそうなので、<MTEntries>のみで出力した場合の動作をどちらに合わせるべきか、再度仕様検討されるとのことでした。

No.9  : (無題)

>TAEKOさん
こんにちは。情報ありがとうございます。

とりあえずは、アーカイブ内のエントリーをすべて出力するなら、<MTEntries lastn="9999">とでもしておくのが無難そうです。

コメントする