2005年11月 4日

カテゴリ・アーカイブをページ分割しました

[ MT設定 ]

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

しかし「料理」カテゴリの記事は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=記事数じゃなくてページ番号にして、あとはページ番号を直接クリックできるようにしたいと思っています

投稿者 こじま : 2005年11月 4日 12:35 | このエントリーを含むはてなブックマーク

トラックバック

トラックバックURL: http://www.skoji.jp/mtbin/mt-tb.cgi/386

» 分割でお願いします from invisible blog
カテゴリーアーカイブのページを分割して10件毎に表示するようにしました。 MovableType(M... [続きを読む]

トラックバック時刻: 2005年11月11日 21:38

» これで完璧・MovableType 3.34インストール覚え書き from 俺なりのたわごと
父親のブログ「鄙からの発信」をDreamHostでMT化したときの覚え書き。 1:アーカイブ・マッピング デフォルトの設定だと階層が深くなりすぎるなど不都... [続きを読む]

トラックバック時刻: 2007年2月 5日 22:43

» Movable TypeでPHPダイナミックパブリッシングとキャッシュとページ分割を同時に利用する方法 from レビログ
買い物ログ: カテゴリ・アーカイブをページ分割しました  を参考に・・・要するに... [続きを読む]

トラックバック時刻: 2007年5月 3日 17:57

» 【さくら】でダイナミックパブリッシング from Macでブログ。Movable Type 備忘録

再構築の時間が長くなりだしたのダイナミックパブリッシングにしてみようと試みた。使用している【さくらインターネット】ではちょっと一手間いるのだが、な...

[続きを読む]

トラックバック時刻: 2007年7月 5日 16:19

コメント

わわー
専門的なことが書いてある
あたしにゃ呪文にしか見えないよ~
でも、確かに5記事くらいずつ出てくれたらわかりやすくていいよね。
さすがソフト屋さん。
尊敬するわ。たまには

投稿者 sato-ice : 2005年11月 7日 16:10

うそうそ、
いつも尊敬してるわ
ぶふふふ

投稿者 sato-ice : 2005年11月 7日 16:10

satoちゃん> じつは随分前からカテゴリー選ぶといっぱい記事が出るのを気にしてたんだけど、解決方法がわかんなかったんですよ。ようやく解決してすっきりだよ。

satoちゃんに尊敬していただくなんてそんなもったいない:)

投稿者 こじま : 2005年11月 7日 22:02

はじめまして。
MTのアーカイブをダイナミック生成しているためにページ分割でつまずいて、調べていたらこちらにたどり着きました。

非常に参考になりました。
おかげさまでダイナミック生成とページ分割の両立ができました。

こじまさんが記事の中で言及されているページ番号制を導入してみたので、よろしければ私のBlogの該当記事をご参照ください。

投稿者 Yuya : 2005年11月11日 22:15

Yuyaさん> はじめまして。お役にたてたようでなによりです。

同じことで困っているひとが絶対にいるはずと思って、手抜きながらこのエントリをかいた甲斐がありました。

ページ番号参考にさせていただきます。いま拝見したところ、Firefoxでは表示されないようですね。

投稿者 こじま : 2005年11月11日 22:39

Firefoxでは表示されませんか…。
コード自体に問題があるのか、スタイルシートの関係なのかはわかりませんが、後ほどFirefoxをインストールして確認してみます。

投稿者 Yuya : 2005年11月11日 22:49

>Yuyaさん、

コメントpaginate navigatorで囲まれている部分がまるごとコメントと解釈されているようです。

ページ分割のコードがわたしのに比べてまっとうでかっこいいですね。こちらこそ参考にさせていただきます。

投稿者 こじま : 2005年11月11日 22:56

ご指摘の通り、コメント部分の問題でした。
他の言語を扱う時に見やすくする為、「-」とか「/」とか「#」をだーっと並べるクセが仇になりましたw

投稿者 Yuya : 2005年11月11日 23:32

初めまして。
このページを参考にカテゴリページの分割をしてみたのですが
どうもうまくいきません。
書いたスクリプトがそのまま表示されてしまうのですが
なにか設定をしないといけないのでしょうか。
よろしくお願いします。

投稿者 イケ : 2006年5月22日 15:36

イケさん>

カテゴリーアーカイブがダイナミックページになっていないのではないでしょうか。

この記事に書いてあることは「ダイナミックページにしたい」という前提のもとでいかにページ分割するか、という話なので、もしイケさんの環境でカテゴリーアーカイブをダイナミックページにする必要がなければ、MTPaginateを試してみてはいかがでしょう。


投稿者 こじま : 2006年5月22日 18:19

返答ありがとうございます。
ダイナミックページ生成ってのをしてなかったんですね^^;
サクラサーバーなのでPHPが使用できずこまっていてやってみたものの
出来ずに書いてしまいました。
ダイナミックページにかんしましてもいろいろとタメしてみましたが
出来なさそうで^^;

サーバー替えようかと思ってます。

投稿者 イケ : 2006年8月 8日 15:02

コメントしてください



(メールアドレスは表示されません)


保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)