« Antinnyに感染 | メイン | ITRONプログラミング入門を読んで »
2006年11月24日
MTPaginateプラグインを導入
2年近くブログを続けていると、さすがにエントリ数も1000を超えます。そこで問題になってくるのが、アーカイブページ。月別なら1ページあたりに限度がありますが、カテゴリ別だと際限なしに増えていきます。以前、外部ネットワークから自分のブログのアーカイブを見たときに、読み込みの嵐になったので、何とかしなくては、と思ってきたのですが…
そこでようやくMTPaginateプラグインを導入です。多くのブログで導入報告がされており、定番のようです。とりあえず、カテゴリページを分割することにしました。作業としては、次の通り(MTのバージョンは3.31-ja)。主に参考にさせていただいた記事は、カテゴリーアーカイブと月別アーカイブのページ分割@小粋空間です。
- 1. MTPaginateプラグインを、ここ(SixApart公式)から辿ってダウンロード
- 2. ダウンロードしたファイルを解凍して、MTのpluginディレクトリに保存
- 3. 左メニューの「設定」から「公開」を選び、下のほうにあるアーカイブマッピングの設定で、Category Archivesの「カスタマイズする」を選択。"cat_<$MTCategoryID$>.php"と記述(これで出力がphp化される)
- 4. 左メニューの「テンプレート」から「アーカイブ」を選び、「Category Archive」を選択して、テンプレート入力画面へ遷移
- 5. <MTEntries>の直前に以下を記述
<MTPaginate>
<MTPaginateIfMultiplePages>
<MTPaginateIfLastPage_>
<a href="<$MTPaginatePreviousPageLink$>">←</a>
</MTPaginateIfLastPage_>
<MTPaginateIfFirstPage_>
<a href="<$MTPaginateNextPageLink$>">→</a>
</MTPaginateIfFirstPage_>
<MTPaginateIfMiddlePage_>
<a href="<$MTPaginatePreviousPageLink$>">←</a>
<a href="<$MTPaginateNextPageLink$>">→</a>
</MTPaginateIfMiddlePage_>
<$MTPaginateNavigator format_all="ALL page" place_all="after" separator=" | ">
</MTPaginateIfMultiplePages>
<MTPaginateContent max_sections="10">
- 6. </MTEntries>の直前に以下を記述(※忘れないように)
<$MTPaginateSectionBreak$>
- </MTEntries>の直後に以下を記述
</MTPaginateContent>
<MTPaginateIfMultiplePages>
<MTPaginateIfLastPage_>
<a href="<$MTPaginatePreviousPageLink$>">←</a>
</MTPaginateIfLastPage_>
<MTPaginateIfFirstPage_>
<a href="<$MTPaginateNextPageLink$>">→</a>
</MTPaginateIfFirstPage_>
<MTPaginateIfMiddlePage_>
<a href="<$MTPaginatePreviousPageLink$>">←</a>
<a href="<$MTPaginateNextPageLink$>">→</a>
</MTPaginateIfMiddlePage_>
<$MTPaginateNavigator format_all="ALL page" placement_all="after" separator=" | ">
</MTPaginateIfMultiplePages>
</MTPaginate>
- 7. あとは、サイトの再構築をすればOK。今回はカテゴリアーカイブしか変更していないので、「アーカイブのみを再構築:カテゴリ」を選択
以上の流れで、MTPaginateプラグインの導入は完了です。成功すれば、cat_1.phpを実行すると、ページ分割して表示します。ちなみにページ分割の仕組みですが、既存のアーカイブHTMLにphpを挿入し、1ページ単位のエントリ数ごとに、if節を設定します。これにより、phpが必要なページ部分のHTMLのみを返すようになっています。そのため、閲覧は軽くなりますが、投稿は効果ありません。
ところが、これで終わりと思ったらぬか喜び。うちの環境だと文字化けが発生しました。
それは、MTの文字コードがUTF-8であるのに対し、うちのphp環境が、default_charset、mbstring.internal_encoding、mbstring.httpoutputがいずれもEUCになっていたためです。phpを使って動いているシステムはそれなりにあるので、おいそれと変えるわけにもいきません。
悶々と悩んでいたところ、PHP5.0/3.php.iniの編集@Ground SunLightの記事を発見です。どうやら、.htaccessにより、先に挙げた3つの値を設定できるようです。そこで、MTのアーカイブがあるディレクトリに、下記の.htaccessファイルを置きました。
<IfModule mod_php4.c>
php_value default_charset "UTF-8"
php_value mbstring.http_output "UTF-8"
php_value mbstring.internal_encoding "UTF-8"
</IfModule>
これでバッチリ動くようになりました。なお、リンク先には「php5.0」とありましたが、当方のphp4.3.6環境でも問題ありませんでした。
投稿者 bokupi : 2006年11月24日 16:33
トラックバック
このエントリーのトラックバックURL:
http://omoshiro-joho.com/c-i-mnet/cgi-bin/mt/mt-tb.cgi/1217