Movable Typeでは、MTEntries タグを用いて最新の投稿エントリーを順番に一覧表示させる際(例えば、ホームページなどで用いられる)に、大きく分けて二つの方法がある。
一つ目は、「lastn=”N”」を用いる方法。これは、最新の N 個のエントリーを表示させる。必ず N 個のエントリーが表示されるけど、短期間にエントリーを N 個以上作ると、1個目のエントリーからガンガン削られてしまう。
二つ目は、「days=”N”」を用いる方法。これは、最新の N 日以内のエントリーを表示させる。どれだけ多くても N 日以内のエントリーが全て表示されるけど、N 日以上更新しない場合、次に更新した時にいきなり何も表示されなくなるか、新たに記述したエントリーしか表示されなくなる。
つまり、前者は頻度の高い更新に弱く、後者は頻度の低い更新に弱い。よって、どちらの方法も安定した表示が行えるとは言い難い。
そこで、これを解決する方法が無いかと思ってあれこれ調べてみた(自分で書ければいいんだけね…、Perl分からない。覚える気があまりない)。すると、海外のサイトで以下のページを発見。
Alexei’s Weblog ≫ MTIndexEntries: Making Movable Type indices a little more reasonable
ここにある「MTIndexEntries」なるプラグイン。これは、「lastn」と「days」を同時に指定する事で、どちらかエントリー数の多い方の表示方法を行うプラグイン。
例えば、高い頻度で更新した場合、数日の間に多数のエントリーが作成される。この時、エントリーの数は lastn < days となるので、「days=”N”」が優先され、N 日以内のエントリーが表示される。しかしその後、更新を数日休んだとしても、今度は lastn > days となるので、「lastn=”N”」が優先され、次に更新しても今度は最新の N 個のエントリーが表示される事になる。これによって、柔軟な表示が行えるようになる、という理屈。まぁ言い換えると、最低「lastn」分の表示数を保証した「days」、ということになるのかな。
ちなみに、MTEntries で「lastn」と「days」を同時に使用しても、「lastn」が優先される様子。
使い方は、プラグインをpluginディレクトリに放り込んで、<MTEntries>タグを、そのまま<MTIndexEntries>に置き換えれば良い。
追記
…っていうかさ、Movable Type側で最初から「最後に更新されたN日分のエントリー」を表示させる方法を提供してくれれば、こんなに悩まずにすむのに…
コメントを残す