• 更新:
  • 投稿:
  • カテゴリィ:

「更新日時が最新」の記事

2007-12-21T22:55:56+09:00 追記

すみません! MT4.x の標準機能で、下記の記事の内容は実現できます。それに、標準機能のほうが高速です。詳しくは、下記の記事をご覧ください。

MT4 標準機能で「更新日時が最新」の記事(「limit」を使う) : 亜細亜ノ蛾

Movable Type 4 で、「更新日時が最新」の記事情報を得る方法を紹介します。MT3 まではプラグインが必要でしたが、MT4 では内蔵機能だけで できますよ!

まずは、「作成日時が最新」の記事タイトルを表示する、ということを考えてみます。これは、簡単ですね。

<MTEntries lastn="1">
  <p><MTEntryTitle></p>
</MTEntries>

次に、「更新日時が最新」の記事タイトル、を得るために MT タグのリファレンスと にらめっこします。

MTEntries | テンプレートタグリファレンス

失敗例

ピッタリのモディファイア、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> ! という記事でした。

[2] このページの一番上へ戻る