カテゴリページの分割化

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

MovableType による日記をつけ初めてはや3ケ月、依然として日記の方向性がないままに書いていても記事が溜まってきまして、カテゴリ別で見ても結構重い・・・・。
特に私が会社で使っているマシンは非力なくせにメモリものってないので、なお始末が悪いってことで、昨日に引き続きサイトの微調整をば♪♪♪♪ (なんだかんだ言って本当は楽しんでるんです)

ググってみると「カテゴリページの分割化記事」は沢山みかけます。で各サイトさんがお勧めしているサイト通りに Plugin 導入を行ってみました。
 → MovableTypeのページ分割/Permalinkの変更
 → 【MovableTypeカスタマイズ】長くなりすぎたページを分割して表示する方法

カテゴリページの分割化を自動で行ってくれるプラグインは「MTPaginate プラグイン」を使います。このプラグインの使用条件&制約は、下記の通りです。
 ・PHPが使用できる環境であること(バージョンによってプラグインの修正あり)
 ・カテゴリページの拡張子が html → php となる

インストール手順は以下の通り
 1.「(MT home)/plugins/」フォルダに MTPaginate をインストール
 2.カテゴリアーカイブ拡張子の修正
 3.Category Archiveテンプレートの追加

1.「(MT home)/plugins/」フォルダに MTPaginate をインストール

 MTPaginate 1.2.2 プラグイン(2004/03/31現在)を、MT Extensions よりダウンロードし
 サーバの (MT home)/plugins/ ディレクトリに MTPaginate.pl をおきます。

 ※PHPのバージョンによりこんな現象がでます(わたしもはまった)
  「ページリンクが表示されるが、そのリンクをクリックしても、ページ移動ができない」
  pageパラメータがうまく読み込まれてないのだな?と対処しましたが、他にもみなさん
  同じように苦労された方がいらっしゃいますので、そちらを参照のこと。
  「\$paginate_current_page = \$$page_selector;」わたしもこれだ!って直したくち
   → MTPaginate.plが動かなかった理由
   → MTPaginate.plが動かなかった理由(2)
   → MTPaginateが動作しない (2)

2.カテゴリアーカイブ拡張子の修正

「管理者画面 → BLOGの設定 → アーカイブの設定」を表示
ここの赤く示した箇所に
 cat_<$MTArchiveCategory dirify="1"$>.php
って入力するのだ!

 とりあえず、この時点で「Category Archive だけ Rebild する」を行ってもよし。
 いままで cat_xxx.html つうのが cat_xxx.php ってなってるから(笑)

3.Category Archiveテンプレートの追加

 さてこっからが正念場です。「管理者画面 → Templateの編集」を表示させて、
 Category Archive を編集します。。。。が、編集前に必ずテンプレートのバックアップを
 ローカルにでもとっておくこと!! そーしないと修正を間違ったときに元に戻せないからネ。

 カテゴリテンプレートの表示方式は、結構好みが別れるところですが私は、
 MTのPHP化とページ分割 さんの表示がいいかなーっと。けどこの方法だと記事自体が
 多いとさらにページリンク表示が凄いことに・・・・(あせ)
 このあたりは、好みなので色々と試行錯誤してみるとよいかもしれません。
  → MTのPHP化とページ分割
  → 【MovableTypeカスタマイズ】長くなりすぎたページを分割して表示する方法
  → movable type 設定メモ(ポップアップの表示)

 修正完了したら、再ビルドね。


と、PHPのバージョンによるハマリがなければ、割と簡単にカテゴリページの分割化ができます。
今回、カテゴリページを分割しましたが他のアーカイブ(Daily, Weekly, Monthly)にも応用ができますし、MTPaginate プラグイン には もっと楽しめる?オプションも用意されていますので色々と試されるといいかもしれません。

ちなみにプラグイン入れられないんだよ。。。ってお嘆きの方は、SEYA さんの方法でカスタマイズするのもいいですよ。(私は、プラグイン導入してから気がついたくち)
 → 月別アーカイブにタイトル一覧追加

[2004/03/31 追記]
とりあえず下記のように、Category Archive テンプレートをいじっておいてみた。
黒い箇所を探して埋め込んでみるよろし♪

<div id="container">
<div class="blog">

<!-- ページの分割化 before -->
<MTPaginate>

<center>
<MTPaginateIfMultiplePages>
   <div class="mpage">
      <MTPaginateIfLastPage_>
         <a href="<$MTPaginatePreviousPageLink$>"><<(<$MTPaginatePreviousPage$>) | </a>
      </MTPaginateIfLastPage_>

      <MTPaginateIfMiddlePage_>
         <a href="<$MTPaginatePreviousPageLink$>"><<(<$MTPaginatePreviousPage$>) | </a>
      </MTPaginateIfMiddlePage_>

      <$MTPaginateNavigator format_all="全て読む" place_all="after" format_current="&lt;font size=+1 color=red&gt;&lt;b&gt;%d&lt;/b&gt;&lt;/font&gt;" separator="|" format_title="%d ページ目だよーん♪">

      <MTPaginateIfFirstPage_>
         <a href="<$MTPaginateNextPageLink$>"> | (<$MTPaginateNextPage$>)>></a> 
      </MTPaginateIfFirstPage_>

      <MTPaginateIfMiddlePage_>
         <a href="<$MTPaginateNextPageLink$>"> | (<$MTPaginateNextPage$>)>></a> 
      </MTPaginateIfMiddlePage_>
    </div>
</MTPaginateIfMultiplePages>
</center>

<MTPaginateContent max_sections="8">
<!-- ページの分割化 after -->


<MTEntries>

<!-- ページの分割化 before -->
<$MTPaginateSectionBreak$>
<!-- ページの分割化 after -->

</MTEntries>


<!-- ページの分割化 before -->
</MTPaginateContent>

<center>
<MTPaginateIfMultiplePages>
   <div class="mpage">
      <MTPaginateIfLastPage_>
         <a href="<$MTPaginatePreviousPageLink$>"><<(<$MTPaginatePreviousPage$>) | </a>
      </MTPaginateIfLastPage_>

      <MTPaginateIfMiddlePage_>
         <a href="<$MTPaginatePreviousPageLink$>"><<(<$MTPaginatePreviousPage$>) | </a>
      </MTPaginateIfMiddlePage_>

      <$MTPaginateNavigator format_all="全て読む" place_all="after" format_current="&lt;font size=+1 color=red&gt;&lt;b&gt;%d&lt;/b&gt;&lt;/font&gt;" separator="|" format_title="%d ページ目だよーん♪">

      <MTPaginateIfFirstPage_>
         <a href="<$MTPaginateNextPageLink$>"> | (<$MTPaginateNextPage$>)>></a> 
      </MTPaginateIfFirstPage_>

      <MTPaginateIfMiddlePage_>
         <a href="<$MTPaginateNextPageLink$>"> | (<$MTPaginateNextPage$>)>></a> 
      </MTPaginateIfMiddlePage_>
    </div>
</MTPaginateIfMultiplePages>
</center>

</MTPaginate>
<!-- ページの分割化 after -->


</div>
</div>

トラックバック(0)

トラックバックURL: http://www.sea-bird.org/mt42/mt-tb.cgi/897

コメントする