以前から気になっていたのですが、カテゴリーアーカイブの表示で、エントリー数が増えてきた時に毎回全てのエントリーを表示するのは合理的では無いと思っていました。そこで、ダイナミック・パブリッシングがPHP対応でうまく行ったところで、カテゴリーアーカイブと月別アーカイブもPHP化してページ分割する事にしました。個別アーカイブについては、PHP化すると、過去の外部サイトからのリンクが切れてしまうので実施しない事にしました。
結論から言うと、ダイナミック・パブリッシングとアーカイブのページ分割は共存できない事が判りました。とりあえず、ダイナミック・パブリッシングをやめて、アーカイブのページ分割をする様にしました。最終的に、どちらを有効にしようか悩んでいます。
■カテゴリーアーカイブと月別アーカイブのページ分割の方法
小粋空間 さんの「カテゴリーアーカイブと月別アーカイブのページ分割」と、我楽さんの「PHP化とページ分割」を参考にさせて頂きました。
(1)MTPaginateプラグインのダウンロード
MT Extensions のページから MTPaginate.zip をダウンロードします。
(2)プラグインファイルのアップロード
MTPaginate.zip を解凍し、「MTPaginate.pl」 を Plugins フォルダにアップロードします。
(3)アーカイブの設定を変更
「メインメニュー」→「ウェブログの設定」→「アーカイブの設定」で「アーカイブ」の「アーカイブ・ファイルのテンプレート」欄に、それぞれ以下を記述し、「変更を保存」します。
・月別アーカイブ( Date-Based Archive) → <$MTArchiveDate format="%Y_%m"$>.php ・カテゴリーアーカイブ(Category Archive) → cat_<$MTCategoryID$>.php
ここで、カテゴリー名に日本語を使用している場合、カテゴリーアーカイブ欄に「<$MTArchiveCategory dirify="1"$>」を設定すると、日本語を使用している複数のカテゴリが、同じカテゴリとして扱われてしまいます。この問題については、野良犬の塒さんの「カテゴリ一覧を分割表示に変更」が参考になります。
(4)テンプレートの変更
「メインメニュー」→「テンプレート」で「アーカイブに関連したテンプレート」の「Category Archive」と「Date-Based Archive」に、それぞれ以下のオレンジ部分を追加します。
<div class="content">
<MTPaginate>
<MTPaginateContent max_sections="8">
<MTEntries>
(途中略)
<$MTPaginateSectionBreak$>
</MTEntries>
</MTPaginateContent>
<div align="center" class="paginate">
<MTPaginateIfMultiplePages>
<$MTPaginateNavigator style="links" format_all="All pages" place_all="after" separator=" | ">
</MTPaginateIfMultiplePages>
</div>
</MTPaginate>
</div>
上記でスタイル設定で使用している、「paginate」クラスの設定を、スタイルシートに追加します。
.paginate {
font-family: Verdana, Arial, sans-serif;
color:#333333;
font-size:x-small;
}
(5)以上で、サイトを再構築すれば、完成です。
■問題点
(1)私の場合、上記の再構築で、以下のエラーが発生しました。このエラーは、ダイナミック・パブリッシングを使っていると発生します。最初にも書きましたが、アーカイブのページ分割とダイナミック・パブリッシングは共存できない様です。とりあえず、ダイナミック・パブリッシングを使わないでしばらく運用してみます。
Smarty error: [in mt:11 line 44]: syntax error: unrecognized tag 'MTPaginate' (Smarty_Compiler.class.php, line 556)
このエラーに関しては、以下のサイトが参考になります。
・カリオノイオさんの「MT:ページ分割エラー」
・Uta's Dreamさんのphp化完了とカテゴリーページの分割
・Sunday MorningさんのMTのカテゴリーページ分割エラーの対処法
(2)再構築時に 「Error 500 Internal Server Error」 が発生する様になりました。個別アーカイブの再構築はOKですが、月別アーカイブとカテゴリーアーカイブの再構築でエラーになります。状況は、2004年8月の「Premature end of script headers」エラーと同じです。またサーバの負荷が大きくなってしまった様なので、CsideNetさんに相談してみたいと思います。