top

エントリーを更新順にソートする~更新リストの作り方(1)

私は過去の記事によく修正・追加を行います。有益な情報などを追加した時、情報が古くなって書き換えた時など、古いエントリーでも上に上がってきて目につくように出来ればいいなあと思うことがあります。例えば更新一覧表みたいな感じで。しかしこれが意外に難しかったんですね。いい方法ないかな~と検索してみても皆さん苦労されてるみたいで…。

問題点の整理
投稿順ではなく更新順に並び替える、ということであれば真っ先に思い浮かぶのが以下の方法だと思います。
<MTEntries lastn="10" sort_by="modified_on">
しかしこれでは駄目なんですね...。最新の10件の中でしか並び替えをしてくれないんです。そのためもっと古いエントリーに更新があっても出てきてくれません。やりたいことは「最新10件の中で更新順に並び替える」ことではなく「全エントリーを対象に更新されたエントリーを新しいものから10件表示したい」ということなので。

並び替えの対象を全エントリーにするだけなら比較的簡単に実現できます。
<MTEntries lastn="500" sort_by="modified_on">
例えばこのようにlastnの数値を全エントリー数より大きいものにしてやれば全てのエントリーがソートの対象になり、一番古いエントリーでも更新があればトップに躍り出てくれます。
しかしこれではエントリーが200件あれば200件全部ズラズラと表示されてしまう…さすがにそれは鬱陶しい…そんなに要らん。最初の10件だけでいいんだ~~。でもその方法が見つからない。。。

で、私もここで行き詰っていたのですが、この度エムロジック放課後プロジェクトから出たCounter Pluginで解決をみたので、覚え書きしておきます。動作実験済みです。

下準備~Counter Pluginのセット
こちらからダウンロード・解凍したものをCounterプラグイン ドキュメントに従ってセットアップします。

■更新のあったエントリーを最新10件分表示する(基本)
青字のlastnの数値はエントリー総数より多いものにします。赤字で指定した数字より1つ少ない件数で表示されます。20件表示させたい場合は21にします。

<ul>
<MTCounter>
<MTEntries lastn="500" sort_by="modified_on">
<$MTCounterPlus$>
<MTCounterIfLess value="11">
<li><$MTEntryModifiedDate format="%y/%m/%d"$> <a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
</MTCounterIfLess>
</MTEntries>
</MTCounter>
</ul>

■更新一覧に表示させたいエントリーのみ最新10件分表示する(応用)
上の方法だと誤字・脱字の修正などどうでもいい内容でも上がってきてしまいます。内容に意味のある変更があった場合のみ表示させたい場合は、エントリーに何らかの目印をつけて、目印のあるエントリーのみをソートの対象にするといいです。
一例として3.3から追加された「エントリータグ」を利用してみました。

修正時に「これは上げたい」と思うエントリーにのみ「@更新」というタグを付けます。タグ名の最初に@を付けるとプライベートモードになり、タグクラウドなどには出てこなくなるので他のタグの邪魔にもならないと思います。以下、同様。

<ul>
<MTCounter>
<MTEntries lastn="500" sort_by="modified_on" tags="@更新">
<$MTCounterPlus$>
<MTCounterIfLess value="11">
<li><$MTEntryModifiedDate format="%y/%m/%d"$> <a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
</MTCounterIfLess>
</MTEntries>
</MTCounter>
</ul>

現在のところ、ダイナミック対応版は出ていないようなので、これを使う場所は静的生成にしておくことを忘れないように。MT4登場のタイミングでダイナミック・パブリッシングにも対応しました。


*今のデザインでは入れる場所がないので、実際に使うかどうかは分かりませんが、とりあえず「出来るんだ」ということが分かっただけでも収穫、ということでメモです。

<2007.9.23 追記・修正>
MT4・ダイナミック対応版登場に合わせて記述を一部修正。
<2007.2.17 追記>
MT4以降はプラグインなしで同じことが出来るようになりました。詳しくは以下。
エントリーを更新順にソートする~更新リストの作り方(2) MT4版

 

トラックバックの一覧

トラックバック 更新履歴を作る  »» 2007年9月20日 03:08
Movable Typeでエントリーを表示する場合、基本はエントリーを投稿した日付を元にして並べられます。 タグで「sort_order]属性で降順・昇...
トラックバック RSSを更新順にする  »» 2007年12月 2日 14:12
 とてもいまさら感が漂ってますが。。。以前やったのではMT4では正しく動かなかっ...

コメント

最近、自分が求めているMTのカスタマイズを検索していると、WingMEMOさんにたどり着くことが多いです(^^;)

カスタマイズネタ感謝感謝ですm(_ _)m

こんにちは。
お役に立てているようで嬉しいです。^^

それはそうと、showBOOさんからのトラバが何故か時々スパムフォルダーに紛れていることがあって、トラバいただいているのにしばらく気付かないことが何回かありました…。すみませんでした。

MTも黙ってないで知らせてくれればいいのにと思うんですが(^^;。
設定少し見直してみようと思います。