Movable Type 備忘録
長くなったページを分割表示する
- Next Page: RSSパーサで気になるサイトをチェック!
- Prev Page: MovableTypeをPHP化する
通常、ブログのトップページとか、月別ページなどでは、複数のエントリが表示されます。
一通り目にすることができるので便利なのですが…長いにも限度がありますよね。
特に月別エントリを表示すると、エントリ数が多かった場合、表示されるまでに時間がかかってしまいます。
そこで、長くなったページを分割表示するカスタマイズをやってみました。
今回参考にさせていただいたサイトは ぐーたら on MT 様です。
カスタマイズ方法
長くなったページを分割表示するには、MTPaginateプラグインを使用します。<br /> MTPaginateプラグインは、訪問者さんがページにアクセスした時点で、PHPによってページ内の表示エントリ数を分割してくれるプラグインです。
▼MTPaginateプラグインの入手はこちらから▼
http://www.nonplus.net/software/mt/MTPaginate.htm
このカスタマイズはブログがPHP化されていないと対応できませんので、注意してください。
ここでは、月別アーカイブを例にして説明します。
まずは、MTPaginateプラグインのインストールです。
上記URLのページの上の方に、「Download」 とありますので、そこからダウンロードしてください。
そして、ダウンロードしたファイルを解凍して、mt/plugins/ ディレクトリの中 にアップロードします。
次に、月別アーカイブのテンプレートをカスタマイズします。
MovableType(ムーバブルタイプ)の管理画面左から テンプレート をクリックして、画面上にある アーカイブ をクリックしてください。
クリックすると、アーカイブ一覧が表示されるので、その中から 日付アーカイブ をクリックします。
テンプレート内のエントリを表示している箇所( <MTEntries>~</MTEntries> )を探してください。
そして、<MTEntries> タグの上に以下のコードを追加します。
<MTPaginate>
<MTPaginateIfMultiplePages>
<div class="page-navi">
<MTPaginateIfPreviousPage_><a href="<$MTPaginatePreviousPageLink$>">« [Prev]</a></MTPaginateIfPreviousPage_>
<$MTPaginateNavigator format="%d" separator=" " format_all="All Pages" place_all="before">
<MTPaginateIfNextPage_><a href="<$MTPaginateNextPageLink$>">[Next] »</a></MTPaginateIfNextPage_>
</div>
</MTPaginateIfMultiplePages>
<MTPaginateContent max_sections="5" section_start="<div class="main-body">">
青い字の部分が1ページで表示する最大エントリ数となります。
また、赤い字の部分がセクションの区切りとなるタグを指定します。

ちなみにわたしのブログの月別アーカイブのテンプレートは、以下のような構成になっています。
左図の緑色の部分の <div class="main-body">~</div> を1ページの区切りと指定しています。
</MTEntries> の直前で、以下の青い字のコードを追加します。
<$MTPaginateSectionBreak$>
</MTEntries>
そして、</MTEntries> の後に以下の青い字のコードを追加します。
</MTEntries>
</MTPaginateContent>
<MTPaginateIfMultiplePages>
<div class="page-navi">
<MTPaginateIfPreviousPage_><a href="<$MTPaginatePreviousPageLink$>">« [Prev]</a></MTPaginateIfPreviousPage_>
<$MTPaginateNavigator format="%d" separator=" " format_all="All Pages" place_all="before">
<MTPaginateIfNextPage_><a href="<$MTPaginateNextPageLink$>">[Next] »</a></MTPaginateIfNextPage_>
</div>
</MTPaginateIfMultiplePages>
</MTPaginate>
追加したら、保存して再構築します。
以上で、ページ内にエントリ数が多くなりがちな月別エントリページを分割して表示できるようになりました。
ここで紹介しているページ分割の方法はほんの一例で、いろんなアトリビュートがありますので、MTPaginate を参考に自分好みにページ分割してみてくださぁ~い。
Trackback Pings(1)
- from
ムーブメント・ブログ:トレンド情報サイト
先日行った、MovableType(ムーバブル・タイプ)の カスタマイズ、「カテゴリーと月別アーカイブのページ 分割」はエントリーするのも忘れるぐらい、...
Comments(6)
- #3: Posted by 起動戦車ガンタンク [RES]
はじめまして。
こちらのブログを参考にMTのカスタマイズに挑戦していま
すが、ページ分割ができずに困っています。何故なら、<MTEntries> タグが各アーカイブに見当たらな
いからです。MTのVerは3.33でPHP化もしてあります。アドバイス等頂けると嬉しいです。
- #4: Posted by bzbell [RES]
>>3 起動戦車ガンタンク さん
はじめまして^^
<MTEntries>タグがない( ̄∇ ̄;)!? とのことですが、<MTEntries>タグにこだわらなくてもいいんです。
上記では月別アーカイブを例にしているので、エントリを1つの区切りとして、5つ分を1ページとしています。
その際、開始セクションと区切りセクションを指定してますので、それさえ指定すれば、エントリはなくてもページ分割可能だと思います。
でも、各アーカイブで<MTEntries>タグがないって…なんででしょうね( ´・ω・`)??
…不思議です。
- #5: Posted by 起動戦車ガンタンク [RES]
<MTEntries>が見つからない件ですが、原因が判明しま
した。3.3では日付・月別アーカイブが最新の一件しか
表示されないという不具合の対処の為に<MTEntries sort_by="created_on" sort_order="descend">に変更され
ていたからでした。あと、ブログ内検索の高速化を実行しましたけど、メチャメチャ早くて気に入ってます。また、検索結果を検索結果ページに吐き出さないので検索結果ページまでレイアウトを整えなければならないのが省けました^^
- #6: Posted by bzbell [RES]
>>5 起動戦車ガンタンク さん
こんにちわ^^
原因が分かってよかったですね。
わたしも何で見つかんないんだろ…って不思議だったんですよねぇ。> メチャメチャ早くて気に入ってます。
ですよねっ!!
わたしもメチャ気に入ってます(>∀< )
ちょとカスタマイズの余地はありますが、機能としては十分満足できますよね( ̄∇ ̄)b> また、検索結果を検索結果ページに吐き出さないので検索結果ページまでレイアウトを整えなければならないのが省けました^^
分かる、分かる!!
わたしも使ってないですもん!!
ちなみに、こちらのMovableTypeのコメントをAjaxで投稿するも設置すると、コメント・プレビューなどのテンプレもいじらなくて済むようになります。
しかも、その後テンプレ差し替えしてもそのまま使えちゃいますので、とってもオススメです( ̄∇ ̄)/


こんにちは!
今回も参考にさせていただきました。
思いのほかスムーズに出来たのでホッとしています。
ありがとうございました。