Top > September 6, 2006

投稿者情報に New マークをつける

September 6,2006 1:20 AM
Category:[新着表示]
Tag:[, ]
Permalink

投稿者情報に New マークをつけるMovable Type のエントリーに新着コメントまたは新着トラックバックがあった場合、エントリーの下に表示されている投稿者情報に New マークをつけるカスタマイズです。ご質問を頂きましたので本エントリーにてご紹介致します。

スクリーンショットはデフォルトテンプレートに設置した例です。新着コメントまたは新着トラックバックと連動して「New!」マークまたは任意の画像を表示させることができます。
また JavaScript を利用してますので、投稿からの経過時間をリアルタイムに計測して、新着マークの表示・非表示が制御できます。表示判定は時間単位での設定が可能です。

以下、カスタマイズ方法です。

1.テンプレートの修正

メインページ/カテゴリー・アーカイブ/日付アーカイブの中から新着表示を行いたいテンプレートに対し、下記の設定を行います。コメント・トラックバックに分けてますので、必要な分だけ設定してください。

1.1 コメントの新着表示

デフォルトテンプレートと公開テンプレートの設定例を下記に示します。青色で表示している部分を追加してください。

デフォルトテンプレートの場合

<MTIfCommentsActive>| <a href="<$MTEntryPermalink$>#comments">コメント (<$MTEntryCommentCount$>)</a> <MTComments lastn="1"><span class="new"><$MTCommentDate format="%Y:%m:%d:%H:%M:%S"$></span></MTComments></MTIfCommentsActive>

公開テンプレートの場合

<!-- コメント・非ポップアップ用 -->
 | <a href="<$MTEntryPermalink archive_type="Individual"$>#comments" title="comments<$MTEntryID$>">Comments</a> [<$MTEntryCommentCount$>] <MTComments lastn="1"><span class="new"><$MTCommentDate format="%Y:%m:%d:%H:%M:%S"$></span></MTComments>

1.2 トラックバックの新着表示

デフォルトテンプレートと公開テンプレートの設定例を下記に示します。青色で表示している部分を追加してください。

デフォルトテンプレートの場合

<MTIfPingsActive>| <a href="<$MTEntryPermalink$>#trackback">トラックバック (<$MTEntryTrackbackCount$>)</a> <MTPings lastn="1"><span class="new"><$MTPingDate format="%Y:%m:%d:%H:%M:%S"$></span></MTPings></MTIfPingsActive>

公開テンプレートの場合

<!-- トラックバック・非ポップアップ用 -->
 | <a href="<$MTEntryPermalink archive_type="Individual"$>#trackbacks" title="trackbacks<$MTEntryID$>">Trackbacks</a> [<$MTEntryTrackbackCount$>] <MTPings lastn="1"><span class="new"><$MTPingDate format="%Y:%m:%d:%H:%M:%S"$></span></MTPings>

2.スクリプトの追加

下記のスクリプトを新着表示を設定したテンプレートの最後の方(</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>

新着表示の時間は

// passage time
var pass = 24;

の赤色部分を変更します。単位は時間です(例は24時間)。

表示させるテキストの内容は

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

の赤色部分を変更してください。HTMLタグも大丈夫ですので

var content = '<img src="http://?/hogehoge.gif" style="vertical-align: middle" />';

とすれば画像を表示することもできます。

3.CSS設定

スタイルシートに下記の設定を追加します。最初の display プロパティで1項のタグに設定したタイムスタンプを非表示にします。その下の color プロパティと font-weight プロパティは、 New!! というテキストが表示された場合に適用される設定です。

span.new {
    display: none;
    color: red;
    font-weight: bold;
}
Comments [5] | Trackbacks [0]
Now loading...
List of "Sep 06, 2006"
QRcode

現在停止中です
携帯電話からこのQRcodeを撮影することで携帯用URLを取得することができます

URI for cellular phones
ギターに入った猫
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

loading ...
BlogPeople
Now loading...
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
クリエイティブ・コモンズ・ライセンス
 
List Me!