「更新日時が最新」の記事
2007-12-21T22:55:56+09:00 追記
すみません! MT4.x の標準機能で、下記の記事の内容は実現できます。それに、標準機能のほうが高速です。詳しくは、下記の記事をご覧ください。
MT4 標準機能で「更新日時が最新」の記事(「limit」を使う) : 亜細亜ノ蛾
Movable Type 4 で、「更新日時が最新」の記事情報を得る方法を紹介します。MT3 まではプラグインが必要でしたが、MT4 では内蔵機能だけで できますよ!
まずは、「作成日時が最新」の記事タイトルを表示する、ということを考えてみます。これは、簡単ですね。
<MTEntries lastn="1">
<p><MTEntryTitle></p>
</MTEntries>
次に、「更新日時が最新」の記事タイトル、を得るために MT タグのリファレンスと にらめっこします。
失敗例
ピッタリのモディファイア、sort_by="modified_on"
を見付けたアナタは、きっと こうするでしょう。
<MTEntries lastn="1" sort_by="modified_on">
<p><MTEntryTitle></p>
</MTEntries>
「誰だってそーする おれもそーする」(by. 虹村 形兆)
しかし、これだと「更新日時が最新」ではなく、「作成日時が最新」の記事タイトルが表示されるだけです。なぜでしょう?
失敗の原因
次のコードを「再構築」してみると、答えが見つかるでしょう。
<MTEntries lastn="10" sort_by="modified_on">
<p><MTEntryTitle></p>
</MTEntries>
つまり、上記のコードは、
「『作成日時が最新』の記事を 10 件抜きだし、その中で『更新日時が最新』の記事から並べ直す」
という意味になります(内部的には どうなっているか、調べてないよ)。
これはこれで使い道があるのですが、更新日時が最新の記事情報だけが欲しい、という用途には合いません。
そこで先人たちは、新たなプラグインを求めてネットの荒波(という名の ぬるま湯)の中に飛び出していったのでした……。
──第一部・完──
さて、ようやく本題ですが、Movable Type 4 ではプラグイン無しで、更新日時が最新の記事を指定できます。
とっっっくに、知られている方法だと思いますが、自分で見付けてうれしかったので、紹介します。
実際のコード
じつに簡単。
<MTEntries lastn="10" sort_by="modified_on">
<MTUnless name="tmp"> <!-- ここがポイント! -->
<p><MTEntryTitle></p>
<MTSetVar name="tmp" value="1"> <!-- ここでセット -->
</MTUnless> <!-- ループ 2 回目からは実行されない -->
</MTEntries>
Perl などで使える do-while
構文(必ず一回は実行するループ)をヒントにしました。
ref.: 制御構文 [Perl講座 -Smart]
lastn="10"
の数字を増やせば、ソートする範囲を変えることができます。あまり多くすると再構築時間が増える(と思う)ので、用途に合わせてほどほどに。
あと、<MTSetVar>
で指定している name="tmp"
の部分は、他で重複しないような名前にしましょう。Perl の my
のような物は無いですからね。
やはり、MT4 攻略の鍵は、<MTSetVar>
! という記事でした。
コメント
うぉ!
アニキ、すげーぜ、これ!
一生付いて行きます・・・・p
うを!
そんなにすごいこと、なのか疑問を持ちながら書いたけど、喜んでもらえて良かった。
MTSetVar とか MTIf ・MTUnless の組み合わせって、いろいろ応用が利いて面白いっスね。