記事やブログの更新時に一定期間(例えば3日間とか1週間)中にNewマークやアイコンを表示するスクリプトです。ものすごく簡単なスクリプトなので説明の余地もないのですが、もしいくらか改造が必要な方々のために解説をしています。特徴としてはphpやperlスクリプトを使わずにJavascriptで作っておいてHTMLファイルに直接記述できることです。
また、何日間Newマークを表示させるか?という部分を指定します。3日間なら3、一週間なら7、10日間なら10というように日付で指定します。設定箇所は以上。
Movable TypeのMTタグとPHPで表示する
PHPをMTタグと組み合わせて作ることもできます。PHPの方が得意な方はこっちの方がわかりやすいです。
<script type="text/JavaScript">以上のコードをHTMLヘッダの中に埋め込みます。設定箇所は、Movable Typeを使っている場合は、呼び出すNewマークアイコン画像のパスをMTタグでもって指定する方がいいと思います。Movable TypeなどのCMSを使っていない場合は、相対パスで呼び出すのがいいと思います。(絶対パスの方がいいのかな?)
<!--//
//---------------
// Newマーク表示
//---------------
function new_mark(y, m, d, cl) {
keep_day = 4; // 何日後まで表示するか?
old_day = new Date(y + "/" + m + "/" +d);
new_day = new Date();
d =(new_day - old_day) / (1000 * 24 * 3600);
if(d <= keep_day) {
// Newマーク
if(cl == "new") document.write("<img src='../image/new_mark.gif' border='0'>");
}
}
//-->
</script>
また、何日間Newマークを表示させるか?という部分を指定します。3日間なら3、一週間なら7、10日間なら10というように日付で指定します。設定箇所は以上。
<script>new_mark(2010,1,10,"new")</script>Newマークを表示させたい箇所に上記のコードを埋め込みます。日付のフォーマットは西暦を4桁で、月と日付を1桁か2桁で指定します。括弧内の"new"は、後々複数のnewマークアイコンを利用する場合につける目印です。今回は"new"だけで構いません。また、Movable Typeを使用する場合は、
<script>new_mark(<$mt:EntryDate language="en" format="%Y,%m,%d"$>,"new")</script>というコードをテンプレートに埋め込んでおくとよいです。日付が自動的に生成されてHTMLファイルとしてバブリッシングしてくれます。
応用編
応用っていうほど難しい話でもないんですが、このコードのnew_markというファンクションでは4つの引数をとってます。yは4桁の西暦、 mは月、 dは日付、 clはそのNewマークの指標となる単なるマーキングです。この4つめの引数(Javascriptではパラメーターというのでしょうか?)に適当な文字を与えてやります。<script>new_mark(2010,1,10,"a")</script>"a"を与えてやった場合には、ファンクションの定義でaを与えられた場合の条件分岐をさせればよいです。
...aが与えられた場合には、clがaだった場合にnew_mark_a.gifを呼び出すようにします。こんな感じで複数のNewマークアイコンを表示できます。残念ながら各マークの表示日数を任意で変えることはできませんが...。
if(cl == "a") document.write("<img src='../image/new_mark_a.gif' border='0'>");
...
Movable TypeのMTタグとPHPで表示する
PHPをMTタグと組み合わせて作ることもできます。PHPの方が得意な方はこっちの方がわかりやすいです。
<mt:Entries lastn="5">
<a href="<$mt:EntryPermalink$>">
<$mt:EntryTitle$>
</a>
<?
$get_date='<$mt:Entrydate format="%Y.%m.%d"$>';#日付を取得(2009.08.27)
$new_image = newmark_date ($get_date);
echo "<img src='".$new_image."' />\n";
?>
<br />
</mt:Entries>
<?
function newmark_date ($date) {
# ○日間 new markを表示する
$setdays = 3;
# new markの画像パス
$new_image_url = '<$mt:BlogURL$>template_item/icon/new.gif';
# 日付を分解する(日付は2009.08.27というフォーマットにすること。)
list ($entry_year,$entry_month,$entry_day) = explode ('.', $date);
$entry_epock = mktime(0,0,0,$entry_month,$entry_day,$entry_year);
# 現在の時間を取得
$now_epock = time();
# $setdaysを秒にする
$setdays_epock = 60*60*24*$setdays;
#比較
if ($now_epock < $entry_epock+$setdays_epock) {
$new = $new_image_url;
} else {
$new = '';
}
return $new;
}
?>


