このブログでは右のカテゴリーからたとえば「料理」を選ぶと、「料理」カテゴリーの記事がぜーんぶ一度に表示されてました。

しかし「料理」カテゴリの記事は100個を超えていていくらなんでもあんまりだなあ。ということで5記事づつ表示するように変更しました。同じ方法を使って、カテゴリなしの場合もインデックスページから5記事づつページめくりで記事を辿っていけるようにしました。

以下、設定内容についてメモです。

Movable Typeでのページ分割については、MTPaginateというプラグインがあります。しかしこのプラグインはダイナミックページではうまく動作しません。このブログではサイドバー設定の都合でダイナミックページを使っていますのでMT Paginateは使えません。対応する気配もないので困ったいていたのですが、こんな記事をみつけました。

Don't Back Down - Pagination Using Smarty

ふむふむ。そもそもMovableTypeでダイナミック・ページを実現するのに使われているSmartyには、ページ分割表示できる能力があるわけですな。この記事を参考にして(というかほぼパクって)いまは次のようにしています。

表示するエントリー数の指定は次のようにしています。

<MTEntries lastn="5" offset="`$smarty.request.offset`">

そしてカテゴリーアーカイブページの上下には次のようなコードをいれて、ページナビゲーションできるようにしています。

<p>
{{capture assign="count"}}<$MTCategoryCount$>{{/capture}}
{{if $smarty.request.offset > 0}}
<a href="?offset={{math equation="max(x-5,0)" x=$smarty.request.offset}}">&laquo; より最近のページ
</a> | <a href="?offset=0">最新のページ</a>
{{/if}}
{{if $smarty.request.offset < $count-5}}
{{if $smarty.request.offset > 0}}
|
{{/if}}
<a href="?offset={{$smarty.request.offset+5}}">より過去のページ &raquo;</a>
{{/if}}
</p>

offset=記事数じゃなくてページ番号にして、あとはページ番号を直接クリックできるようにしたいと思っています