てんねん月桜: 新着エントリーのあるカテゴリーに New マークをつける

« エントリーの最終更新日時を表示 | メイン | 【覚え書き】mixiと連携させる »

2007年3月15日(木) 友引

●新着エントリーのあるカテゴリーに New マークをつける

 小粋空間さんの、新着エントリーのあるカテゴリーに New マークをつけるというエントリーを見て、サブカテゴリーリストにやってみることにしました。
 JavaScriptで書かれているので、テンプレート、スタイルシートに書き加えるだけのお手軽カスタムです。

サブカテゴリーリスト(赤字の部分を追加)

<!-- サブカテゴリー用 -->
<div class="side">
<div id="categories">
<MTSubCategories>
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a> [<$MTCategoryCount$>] <span class="new"><MTEntries lastn="1"><$MTEntryDate format="%Y:%m:%d:%H:%M:%S"$></MTEntries></span><MTElse>
<li><MTCategoryLabel>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse max_depth="3">
</li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTSubCategories>
</div>
</div>
<!-- サブカテゴリー用 -->

スクリプトの追加(追加したいテンプレートの下方、「</body>」の直前に挿入)

<script type="text/javascript">
<!--
// passage time
var pass = 24;

// display content
var content = 'New!!';

var currentDate = new Date();
var spans = document.getElementsByTagName('span');
for (i = 0; i < spans.length; i++) {
if(spans[i].getAttribute('class') == 'new' ||
spans[i].getAttribute('className') == 'new') {
time = spans[i].childNodes[0].nodeValue.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){
spans[i].innerHTML = content;
spans[i].style.display = 'inline';
}
}
}
//-->
</script>

※var pass = 24;の赤字(24)は、新着表示の時間。任意の数字の変更できます。

※var content = 'New!!';の赤字(New!!)は、表示させる内容です。
HTMLタグも使用できるので、画像の表示も可能です
例) var content = '<img src="http://~/hogehoge.gif" style="vertical-align: middle" />';

※ time = spans[i].childNodes[0].nodeValue.split(":");
青字は、
time = spans[i].innerHTML.split(":");
に修正します。(詳細は下記にて)


CSSの設定

span.new {
display: none;
color: red;
font-weight: bold;
}

 これで、新着記事のあるカテゴリーは、リストに「NEW」表示ができるはずだったのですが、CSSの「 display: none;」で非表示設定になっているはずのタイムスタンプが表示され、「NEW」の文字が表示されません。
 色々調べてみたところ、New マーク表示カスタマイズ改善のお知らせという記事を発見しました。
 スクリプトに訂正があったようで、記事に従ってスクリプトを修正したところ(青字部分)、タイムスタンプは表示されず、無事に「NEW」の文字を拝むことができるようになりました。

スクリプトの修正

<script type="text/javascript">
<!--
// passage time
var pass = 24;

// display content
var content = 'New!!';

var currentDate = new Date();
var spans = document.getElementsByTagName('span');
for (i = 0; i < spans.length; i++) {
if(spans[i].getAttribute('class') == 'new' ||
spans[i].getAttribute('className') == 'new') {
time = spans[i].innerHTML.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){
spans[i].innerHTML = content;
spans[i].style.display = 'inline';
}
}
}
//-->
</script>


トラックバックURL

このエントリーのトラックバックURL:

※重複トラックバック防止プラグインを使用しています。
また、当ブログへのリンクのないトラックバックは受け付けられませんので、ご注意下さい。

コメントする


※スパム対策・情報保護の為、
ご記入頂いたメールアドレスは表示致しません。


(^o^)01 (*^o^*)02 (*^o^*)03 (*^o^*)04 (*^o^*)05') (^_-)-*06 (f*^o^*)07 (^3^)08
(;_;)11 (;_;)12 (;_;)13 (^_;)14 (-_-#)15 (-_-#)16 (-_-#)17 (-_-#)18
Y(;_;)Y21 (-_-)22 (-o-;)23 w(-o-;)w24 (^_^;)25 (^_^;)26 (+o+)27 (+o+)28
(toro)31 (toro)32 (toro)33 (toro)34 (toro)35
(toro)36 (toro)37 (toro)38 (toro)39

 ※スパム対策の為、ひらがなと句読点が文中にまったくない投稿は
  受け付けられませんので、ご注意下さい。