2006年09月15日

最新のエントリーに新着マークを表示させる

Movable Typeで、最新のエントリーに新着マークを表示させるサンプルです。

ネットでいろいろ調べてみたところ、PHPを使うもの、JavaScriptを使うもの、外部CGIを使うものなどが見つかりました。そしてこれらは「最新の」ではなく、エントリーの日時を基準に「投稿から○時間の記事」に新着マークを表示させるものでした。

以下のサンプルは、Movable Type標準のMTEntryNext、MTSetVarBlock、MTGetVarを使って、一番最新のエントリー1件だけに新着マークを表示させるものです。探しきれなかっただけでどこかで公開されているやり方かも知れませんし、もっといいやり方もあるかも知れませんが、ボクにはこれが精一杯でした。

設定するテンプレート : エントリー・アーカイブ
新着マーク : <span style="color: #ff0000">New!!</span>

<MTSetVarBlock name="latest">
  <span class="color: #ff0000;">New!!</span>
</MTSetVarBlock>
<MTEntryNext>
  <MTSetVarBlock name="latest"> </MTSetVarBlock>
</MTEntryNext>
<$MTGetVar name="latest"$>

まず、MTSetVarBlockを使って新着マークをlatestという変数に割り当てます。

次に、MTEntryNextで「次のエントリー」がある場合にもう一度MTSetVarBlockを使って、さっき割り当てた新着マークを消しています。これで「次のエントリー」が無い、つまり最新のエントリーの場合にだけ新着マークが残ることになります。中身を消すだけなので、<$MTSetVar name="latest" value="" $>でもいいでしょう。

最後に、新着マークを表示させたい場所にMTGetVarを使ってlatestに割り当てられている内容を表示させます。MTSetVarを使った変数割り当ては、当然このMTGetVarより先に行わなければなりません。

いかがでしょうか?

最初に試した方法は、MTEntryNextの中でMTElseを使って表示させる方法でした。しかし、やり方が間違っていたのか、それともMTEntryNextの中はMTElseに対応していないのかわかりませんが、これでは表示できませんでした。

PreviousNextInCategory」プラグインを使えば、カテゴリー別で最新1件に新着マークを表示させることができると思います。

上記はエントリー・アーカイブの場合ですが、カテゴリー・アーカイブでもMTSetVarBlockとMTGetVarを使って表示させることができます。やり方は…考えてみてください(^^;。要望があれば公開してみますが、要は「先に設定して、要らなくなったら消す」です。
posted by はしもと at 14:20| Comment(0) | TrackBack(0) | Movable Type
この記事へのコメント

この記事へのトラックバック