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> タグの上に以下のコードを追加します。

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

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

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

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

    <$MTPaginateSectionBreak$>
</MTEntries>

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

    </MTEntries>
</MTPaginateContent>
<MTPaginateIfMultiplePages>
<div class="page-navi">
<MTPaginateIfPreviousPage_><a href="<$MTPaginatePreviousPageLink$>">&laquo; [Prev]</a></MTPaginateIfPreviousPage_>
<$MTPaginateNavigator format="%d" separator="&nbsp;" format_all="All Pages" place_all="before">
<MTPaginateIfNextPage_><a href="<$MTPaginateNextPageLink$>">[Next] &raquo;</a></MTPaginateIfNextPage_>
</div>
</MTPaginateIfMultiplePages>
</MTPaginate>

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

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

 Trackback Pings(1)

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

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

 Comments(6)

#1: Posted by MOVEMENT Author Profile Page [RES]

こんにちは!

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

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

#2: Posted by bzbell [RES]

>>1 MOVEMENT さん

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

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

#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で投稿するも設置すると、コメント・プレビューなどのテンプレもいじらなくて済むようになります。
しかも、その後テンプレ差し替えしてもそのまま使えちゃいますので、とってもオススメです( ̄∇ ̄)/

 Post a Comment

コメント用フィード