カテゴリ・アーカイブをページ分割しました
このブログでは右のカテゴリーからたとえば「料理」を選ぶと、「料理」カテゴリーの記事がぜーんぶ一度に表示されてました。
しかし「料理」カテゴリの記事は100個を超えていていくらなんでもあんまりだなあ。ということで5記事づつ表示するように変更しました。同じ方法を使って、カテゴリなしの場合もインデックスページから5記事づつページめくりで記事を辿っていけるようにしました。
以下、設定内容についてメモです。
Movable Typeでのページ分割については、MTPaginateというプラグインがあります。しかしこのプラグインはダイナミックページではうまく動作しません。このブログではサイドバー設定の都合でダイナミックページを使っていますのでMT Paginateは使えません。対応する気配もないので困ったいていたのですが、こんな記事をみつけました。
ふむふむ。そもそも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}}">« より最近のページ
</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}}">より過去のページ »</a>
{{/if}}
</p>
offset=記事数じゃなくてページ番号にして、あとはページ番号を直接クリックできるようにしたいと思っています