メモログ

⛰ 塵が積もって山とならないメモのログ 👄

MTPaginate: Movable Typeでページネーションをする

ふと、Movable Type でインデックスページをページネートしたいなと思い、実践してみました。MTPaginate というプラグインを使って、ページネーションを行います。MTPaginateは、個人は無償ですが、商用利用の場合は20ドルかかります。

MTPaginate のインストール

MTPaginateをダウンロードしてきて、pluginフォルダの中身をMTのpluginフォルダに、mt-static/pluginsフォルダの中身をMTのmt-static/pluginsフォルダにそれぞれアップロードします。

phpファイルの生成

phpでないと動作しないので、phpファイルのインデックステンプレートを生成します。「インデックスページ」の中身を丸ごとコピーして、新たに「インデックスページ(ページネート)」というテンプレートを作成しました。ファイル名は「index.php」。インデックスページをそのまま利用しても良かったのですが、この方が何か問題が起きたときに後戻りしやすそうだったので。

そして、さくらのレンタルサーバーはファイルのパーミッションが705か755でないとphpを利用できないので、mt-config.cgiにHTMLPerm 0755 と追記。

ページネーション部分のタグを記述

エントリーの生成部分を下記のように変更。max_sectionsで1ページあたりのエントリー数を指定して、ページネートするエントリーの件数はMTEntriesで100件に指定。

<MTPaginate>
<MTPaginateContent max_sections="5">
<MTEntries lastn="100">
<MTPaginateSectionID><$MTEntryID></MTPaginateSectionID>
<$MTInclude module="ブログ記事の概要"$>
<$MTPaginateSectionBreak$>
</MTEntries>
</MTPaginateContent>

<MTPaginateIfMultiplePages>
<div class="pagenate"><$MTPaginateNavigator style="links" separator=" " $></div>
</MTPaginateIfMultiplePages>

<MTPaginateIfLastPage_>
<div class="lastpage">より過去の記事は<a href="<$MTBlogURL$>archives.html">記事タイトル一覧</a>を参照ください。</div>
</MTPaginateIfLastPage_>

</MTPaginate>

CSSの追加

CSSはこんな感じのを追加しました(そのうち変更するかもしれません)。

/* pagenate */
.pagenate,.lastpage {font-size:11px; color:#666; margin:1em 0; border-top:1px dashed #ccc; padding-top:0.7em;}
.lastpage {border:none;margin-top:0; padding-top:0;}
.pagenate a {border:1px solid #ccc; text-decoration:none;padding:2px 1px; font-size:11px;}
.pagenate a:hover {color:#fff; background-color:#fc3; border-color:#fc3;}
.pagenate .pagenate-last {border:none; text-decoration:underline;}
.pagenate a.pagenate-last:hover{background-color:transparent; color:#666;}

index.html の撤収

FTPにてindex.htmlファイルを削除して、index.htmlが再構築されないように「インデックスページ」の「再構築オプション」のチェックをオフにして保存。index.htmlでアクセスがあった場合に、index.phpにリダイレクトするように.htaccessを指定(詳細は省略)。

以上です。作業内容はこれだけなのですが、ローカルで試したりしているうちにあっというまに時間がすぎていきました。ページングのもっと賢いやり方があれば、ぜひ教えてください。