TopMovable Typeカスタマイズ新着表示 > 2006年9月
2006年9月 6日

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

September 6,2006 1:20 AM
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...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

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


AMN
Categories
Monthly Archives
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3