ページ分割してくれるMovable Typeプラグイン「PageBute」を導入しました

ページ分割してくれるMovable Typeプラグイン「PageBute」を導入しました

Movable Typeでは、なぜかデフォルトでは「次の10件」という表示が出ません。
かといって、1ページに大量のエントリーがずらーっと並んでるのもちょっと…。
というわけでプラグインを使ってページを分割してみました。

ダウンロード

こちらからプラグインをダウンロードして解凍。

バージョン3.5.6が最新だったので、それをダウンロードしました。

インストール

mtインストールディレクトリに「PageBute」をアップロード。

  • /plugins

設定を変更

1ページあたりの表示件数が設定されていると、そちらが有効になってしまいます。
「設定」→「投稿」のページで表示される記事数を「0」や「999」に変更しておきます。

件数を変更

導入方法

区切りたい部分(MTEntriesなど)をMTPageContentsタグで囲みます。
何件で区切るかはcountで指定します。
出力されるリンクを相対パスにしたいので、属性「abs2rel="1"」を指定しています。
分割する位置はMTPageSeparatorタグを記述して指定。このタグの後に改行がないと一番古いエントリーが反映されなくなるらしいので注意。
MTIfPageFirst以下はリンクを出力するための指定です。
詳しいタグはこちらに載っています。

メインページのテンプレートを以下のように修正しました。

<MTPageContents count="10" abs2rel="1">
<mt:Entries>
<$mt:Include module="ブログ記事の概要"$>
<$MTPageSeparator$>
</mt:Entries>
</MTPageContents>

<ul>
<MTIfPageFirst><$MTPageFirst delim="|&lt;"$></MTIfPageFirst>
<MTIfPageBefore><$MTPageBefore delim="&lt; prev"$></MTIfPageBefore>
<$MTPageLists delim="" link_start="<li>" link_close="</li>" show_always="0"$>
<MTIfPageNext><$MTPageNext delim="next &gt;"$></MTIfPageNext>
<MTIfPageLast><$MTPageLast delim="&gt;|"$></MTIfPageLast>
</ul>

ページ分割のリンクが表示されました!

できました

でも、月別アーカイブ、カテゴリアーカイブに導入しようとしてつまづきました…。

問題発生

月別アーカイブ、カテゴリアーカイブにページ分割を導入しようとしたところ、出力されたリンクが変…。

このブログでは、ブログパスとアーカイブパスを別にしているため、リンクがうまく出力できなかったみたいです。

  • ブログ:http://miauler.net/blog/
  • アーカイブ:http://miauler.net/archives/

「index_x.html」のページは正常に作られていたので、かなり無理やりなのですが、月別アーカイブ、カテゴリアーカイブの場合のリンク出力部分を以下のようにしてみました。
対象ページへのリンクから番号を取り出し、「index_x.html」へのリンクを作成しています。
1ページ目のURLは「index_1.html」ではなく「index.html」なので、MTIfで分岐しています。
MTIfは使えないという意見も見かけたのですが、とりあえず動いてはいます。

<MTPagination>
<MTSetVars>
page_prev=<$MTPaginationPrev element="number"$>
page_first=<$MTPaginationLink element="number"$>
</MTSetVars>
<ul>
<MTIfPaginationFirst><li><a href="<$mt:ArchiveLink$>index.html" class="link_first">|&lt;</a></li></MTIfPaginationFirst>
<MTIfPaginationPrev><li><a href="<$mt:ArchiveLink$>index<mt:If name="page_prev" eq="1"><mt:Else>_<$MTPaginationPrev element="number"$></mt:If>.html" class="link_next">&lt; prev</a></li></MTIfPaginationPrev>
<li><MTIfPaginationCurrent><span class="current_page"><$MTPaginationLink element="number"$></span><MTElse><a href="<$mt:ArchiveLink$>index<mt:If name="page_first" eq="1"><mt:Else>_<$MTPaginationLink element="number"$></mt:If>.html" class="link_page"><$MTPaginationLink element="number"$></a></MTIfPaginationCurrent></li>
<MTIfPaginationNext><li><a href="<$mt:ArchiveLink$>index_<$MTPaginationNext element="number"$>.html" class="link_next">next &gt;</a></li></MTIfPaginationNext>
<MTIfPaginationLast><li><a href="<$mt:ArchiveLink$>index_<$MTPaginationLast element="number"$>.html" class="link_last">&gt;|</a></li></MTIfPaginationLast>
</MTPagination>
</ul>

とりあえずできました。
テンプレートモジュールを作って、それをメインページ、月別アーカイブ、カテゴリアーカイブで使っています。
月別アーカイブ、カテゴリアーカイブのリンクが絶対パスになっているので、そのうち相対パスに直したいです。

下のボタンを押すと拍手送信&メッセージフォームが開きます。→WEB拍手お返事