Movable Typeで、24時間以内の投稿は自動でNEWマークを付ける方法。
作戦
- 再構築をしなくても24時間を過ぎると自動で消える
- ↑ の理由でajax
- newマークの見た目や場所が一定ではないので、DOM構築はしない
- ↑ の理由で先にnewマークをマークアップしておいて非表示にしておく
Movable Type
<ul>
<mt:Entries lastn="10">
<li class="" id="newstopics-<$mt:EntryID$>">
<a href="<$mt:EntryPermalink$>">
<mt:If tag="EntryDataThumbnail">
<mt:EntryDataThumbnailAsset><div class="thumnail"><img src="<$MTAssetURL$>" /></div></mt:EntryDataThumbnailAsset>
</mt:If>
<div class="status">
<span class="new" data-tdatetime="<$MTEntryDate format="%Y:%m:%d:%H:%M:%S"$>">NEW</span><$mt:EntryDate format="%Y.%m.%d"$>
<mt:If tag="EntryPrimaryCategory">
<mt:EntryPrimaryCategory>
<span class="cate <$mt:CategoryBasename$>"><$mt:CategoryLabel$></span>
</mt:EntryPrimaryCategory>
</mt:If>
</div>
<div class="message"><$mt:EntryTitle$></div>
</a>
</li>
</mt:Entries>
</ul>
肝になるのはこの部分
">NEW
Jquery
$(function () {
// 経過時間(何時間以内の記事に付与するか)
var pass = 24;
var currentDate = new Date();
$('[data-tdatetime]').each(function (i,elem) {
var time = $(elem).data('tdatetime').split(":");
var entryDate = new Date(time[0], time[1] - 1, time[2], time[3], time[4], time[5]);
var now = (entryDate.getTime() - currentDate.getTime()) / (60 * 60 * 1000);
now = Math.ceil(now);
if (-now <= pass) {
$(this).show();
}
});
})
参考
Movable Typeの各リストに新着マークを表示する(jQuery編)
Movable Typeの各リストに新着マークを表示するカスタマイズ(jQuery版)を紹介します。

コメント