Movable Type 備忘録

 長くなったページを分割表示する

通常、ブログのトップページとか、月別ページなどでは、複数のエントリが表示されます。
一通り目にすることができるので便利なのですが…長いにも限度がありますよね。

特に月別エントリを表示すると、エントリ数が多かった場合、表示されるまでに時間がかかってしまいます。

そこで、長くなったページを分割表示するカスタマイズをやってみました。

今回参考にさせていただいたサイトは ぐーたら 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> タグの上に以下のコードを追加します。

  1. <MTPaginate>
  2.   <MTPaginateIfMultiplePages>
  3.     <div class="page-navi">
  4.       <MTPaginateIfPreviousPage_><a href="<$MTPaginatePreviousPageLink$>">&laquo; [Prev]</a></MTPaginateIfPreviousPage_>
  5.  
  6.       <$MTPaginateNavigator format="%d" separator="&nbsp;" format_all="All Pages" place_all="before">
  7.  
  8.       <MTPaginateIfNextPage_><a href="<$MTPaginateNextPageLink$>">[Next] &raquo;</a></MTPaginateIfNextPage_>
  9.     </div>
  10.   </MTPaginateIfMultiplePages>
  11.   <MTPaginateContent max_sections="5" section_start="&lt;div class=&quot;main-body&quot;&gt;">

青い字の部分が1ページで表示する最大エントリ数となります。
また、赤い字の部分がセクションの区切りとなるタグを指定します。

ちなみにわたしのブログの月別アーカイブのテンプレートは、以下のような構成になっています。

左図の緑色の部分の <div class="main-body">~</div> を1ページの区切りと指定しています。
</MTEntries> の直前で、以下の青い字のコードを追加します。

  1.     <$MTPaginateSectionBreak$>
  2. </MTEntries>

そして、</MTEntries> の後に以下の青い字のコードを追加します。

  1.     </MTEntries>
  2.   </MTPaginateContent>
  3.  
  4.   <MTPaginateIfMultiplePages>
  5.     <div class="page-navi">
  6.       <MTPaginateIfPreviousPage_><a href="<$MTPaginatePreviousPageLink$>">&laquo; [Prev]</a></MTPaginateIfPreviousPage_>
  7.  
  8.       <$MTPaginateNavigator format="%d" separator="&nbsp;" format_all="All Pages" place_all="before">
  9.  
  10.       <MTPaginateIfNextPage_><a href="<$MTPaginateNextPageLink$>">[Next] &raquo;</a></MTPaginateIfNextPage_>
  11.     </div>
  12.   </MTPaginateIfMultiplePages>
  13. </MTPaginate>

追加したら、保存して再構築します。

以上で、ページ内にエントリ数が多くなりがちな月別エントリページを分割して表示できるようになりました。
ここで紹介しているページ分割の方法はほんの一例で、いろんなアトリビュートがありますので、MTPaginate を参考に自分好みにページ分割してみてくださぁ~い。

 Trackback Pings(2)

from ムーブメント・ブログ:トレンド情報サイト

先日行った、MovableType(ムーバブル・タイプ)の カスタマイズ、「カテゴリーと月別アーカイブのページ 分割」はエントリーするのも忘れるぐらい、...

from CSS Lecture

Paged ArchivesはPHP化せずにアーカイブページを分割する事が出でき...

 Comments(12)

#1: Posted by Author Profile Page MOVEMENT @ June 4, 2006 [REPLY]
user-pic

こんにちは!

今回も参考にさせていただきました。
思いのほかスムーズに出来たのでホッとしています。

ありがとうございました。

#2: Posted by bzbell @ June 4, 2006 [REPLY]
user-pic

>>1 MOVEMENT さん

こんにちわ^^
毎度の訪問ありがとうございます。

問題なく設置できて何よりです:pp_05.gif:

#3: Posted by 起動戦車ガンタンク @ October 12, 2006 [REPLY]
user-pic

はじめまして。

こちらのブログを参考にMTのカスタマイズに挑戦していま
すが、ページ分割ができずに困っています。

何故なら、<MTEntries> タグが各アーカイブに見当たらな
いからです。MTのVerは3.33でPHP化もしてあります。

アドバイス等頂けると嬉しいです。

#4: Posted by bzbell @ October 12, 2006 [REPLY]
user-pic

>>3 起動戦車ガンタンク さん

はじめまして^^

<MTEntries>タグがない( ̄∇ ̄;)!? とのことですが、<MTEntries>タグにこだわらなくてもいいんです。

上記では月別アーカイブを例にしているので、エントリを1つの区切りとして、5つ分を1ページとしています。

その際、開始セクションと区切りセクションを指定してますので、それさえ指定すれば、エントリはなくてもページ分割可能だと思います。

でも、各アーカイブで<MTEntries>タグがないって…なんででしょうね( ´・ω・`)??
…不思議です。

#5: Posted by 起動戦車ガンタンク @ October 15, 2006 [REPLY]
user-pic

<MTEntries>が見つからない件ですが、原因が判明しま
した。3.3では日付・月別アーカイブが最新の一件しか
表示されないという不具合の対処の為に<MTEntries sort_by="created_on" sort_order="descend">に変更され
ていたからでした。

あと、ブログ内検索の高速化を実行しましたけど、メチャメチャ早くて気に入ってます。また、検索結果を検索結果ページに吐き出さないので検索結果ページまでレイアウトを整えなければならないのが省けました^^


#6: Posted by bzbell @ October 15, 2006 [REPLY]
user-pic

>>5 起動戦車ガンタンク さん

こんにちわ^^

原因が分かってよかったですね。
わたしも何で見つかんないんだろ…って不思議だったんですよねぇ。

> メチャメチャ早くて気に入ってます。

ですよねっ!!
わたしもメチャ気に入ってます(>∀< )
ちょとカスタマイズの余地はありますが、機能としては十分満足できますよね( ̄∇ ̄)b

> また、検索結果を検索結果ページに吐き出さないので検索結果ページまでレイアウトを整えなければならないのが省けました^^

分かる、分かる!!
わたしも使ってないですもん!!
ちなみに、こちらのMovableTypeのコメントをAjaxで投稿するも設置すると、コメント・プレビューなどのテンプレもいじらなくて済むようになります。
しかも、その後テンプレ差し替えしてもそのまま使えちゃいますので、とってもオススメです( ̄∇ ̄)/

#7: Posted by エミ @ June 16, 2008 [REPLY]
user-pic

はじめまして
検索から飛んできました!
movable type3.xでコメントが多い場合、例えば10件毎に表示するようなプラグインはあるのでしょうか。
htmlでコメントの分割を行いたいので、MTPaginateは使用できません。
何か良い手はあるのでしょうか。

#8: Posted by Author Profile Page bzbell @ June 16, 2008 [REPLY]
user-pic

>>7 エミ さん

こんばんわ^^

PageBute プラグインってのがあります。
http://bizcaz.com/archives/2007/10/06-233222.php

PageBute プラグインはブログの PHP 化有無に限らず使えますのでうってつけかとうぅ~ん
それに Pagenate よりカンタンですよ。

分からないことがあれば、言って頂ければわたしの方でサンプルをお作りします。

#9: Posted by Author Profile Page glass @ August 2, 2008 [REPLY]
user-pic

いつもお世話になっています。
ページの表示について教えてください。
上記にかかれている青い文字コードの記述の順番をかえてもページの表示が
次へ 1 2 3 4 5 すべて   になります。

これを
1 2 3 4 5 次へ すべて    になるようにしたいのです。

次へを押すと
前へ 1 2 3 4 5 次へ すべて  になるようにしたいのです。

青い文字コードの記述を教えていただけますか。
すいませんがご指導よろしくお願いします。

#10: Posted by Author Profile Page bzbellからglassへの返信 @ August 2, 2008 [REPLY]
user-pic

>>9 glass さん

こんばんわ^^

もうこのプラグイン使ってないし、MT3.2 の頃の記事なのでうる覚え あせあせ で申し訳ないのですが、
単刀直入にいいますと glass さんがやりたいことはプラグインをカスタマイズしない限りできません。

リストページ( ページ番号リンク )と全ページリンクは MTPaginateNavigator タグで表示できます。
これは常にいっしょに表示されます。ページ番号リンクと全ページリンクの間に「次へ」というリンクを入れることはできません。

詳しくは配布元さんのプラグイン説明をご覧頂くとして、このような回答でよかったですかあせあせ

#11: Posted by Author Profile Page glass @ August 3, 2008 [REPLY]
user-pic

ご返答有難うございます。
これってけっこう古かったんですね。

#12: Posted by Author Profile Page bzbellからglassへの返信 @ August 3, 2008 [REPLY]
user-pic

>>11 glass さん

そうですねぇあせあせ
わたしが MT3.2 を使った頃には既にあったものですからねぇ。

それに配布元もこのプラグインのバージョンアップを行ってませんので使い続けるのもどうかと思って、わたしは今は使ってません。( 使ってる人もいるようですけどね )

 Post a Comment

 

コメント用フィード