- このページの位置
- ホーム > blogっぷり! > 石輪っぷり! > MovableType > MTタグで自動で消える"New"マークを表示する
石輪っぷり!
MTタグで自動で消える"New"マークを表示する
[MovableType] 2009年7月29日 0時09分
最新記事に"New"マークを付け、一定時間経過後に自動的に消えるようにする方法として、PHPを使う方法や、JavaScriptを使う方法がありますが、PHPを使う方法は当然ページをPHPファイルとして出力しなければなりませんし、JavaScriptを使う方法はJavaScriptが無効な環境では表示されません。
そこで、MTタグだけで自動的に消える"New"マークを考えてみました。
例えばエントリーから5日経過後に消す場合、エントリー日付と現在の日付(正確には再構築日)の差が5以内であれば"New!"を表示し、再構築した時点で差が5より大きくなったら消すという考え方です。
前提として、日付データを引き算するために、日付を取得する際に属性にformat="%Y%j"を指定して、4桁の年+3桁の年初からの日数というカタチの7桁の数値に置き換えて取得します。
まず、再構築日を<$mt:Date format="%Y%j"$>で取得しておき、エントリー毎にエントリー日付を<$mt:EntryDate format="%Y%j"$>で取得します。
そして、エントリー日付から再構築日を引き算し、その値が−(マイナス)5以上かどうかを判定します。因みに過去から現在を引くと、その差は数値上の最大値で0となりますので、−(マイナス)5以上即ち5日以内となります。
さらに、エントリー日付と再構築日が年末年始にまたがる場合は、<$mt:Date format="%Y%j"$>の値が636(年末が閏年の場合は635)プラスされますので、−(マイナス)640以上かつ−(マイナス)635以下を判定値とします。
つまり、エントリー日付から再構築日を引いた値が、−(マイナス)5以上の場合、もしくは−(マイナス)640以上かつ−(マイナス)635以下の場合に"New!"を表示します。(ただし、閏年の年末のエントリーは6日経過後消えることになります。)
トップページなどによくある新着情報リストに実装する場合のコードは以下の通り。
<mt:SetVarBlock name="today"><$mt:Date format="%Y%j"%></mt:SetVarBlock>
<mt:Entries>
<mt:EntriesHeader><dl></mt:EntriesHeader>
<dt><$mt:EntryDate format="%x"$></dt>
<dd>
<mt:SetVarBlock name="passed"><$mt:EntryDate format="%Y%j"%></mt:SetVarBlock>
<mt:SetVar name="passed" value="$today" op="sub">
<mt:If name="passed" ge="-5">
<span class="new">New!</span>
</mt:If>
<mt:If name="passed" ge="-640">
<mt:If name="passed" le="-635">
<span class="new">New!</span>
</mt:If>
</mt:If>
<$mt:EntryTitle encode_html="1"$>
</dd>
<mt:EntriesFooter></dl></mt:EntriesFooter>
</mt:Entries>
これを毎日再構築すればよいわけですが、さらに、mt-rebuildプラグインとサーバのcronを使って定期的に再構築を実行させれば、日々手をかけること無く自動で消える"New"マークが実装できます。
トラックバック(1)
- :
-
送信元: せんむの技術ブログ - 新着表示マークをMTタグのみで行う (58.138.174.95)
新着エントリーに新着表示マークをつけるには、JavaScriptを使う方法があり... 続きを読む
- « 前の記事
- 携帯サイトを作るためのあれこれ(その2:MT編)
- 次の記事 »
- Internet Explorer 6 撲滅運動












コメントする