blog Entry Archive

PHPで新しいエントリーとコメントにNEWマークを表示する

このサイトで使っている、新しいエントリーと新しいコメントにnewマークを表示させる方法。

このサイトのnewマークはPHPによって表示させています。
この方法を使うためには、ページの拡張子を「.html」「.htm」などから「.php」に変更する必要があります。
(※拡張子を変えたくない場合は、次の項目「拡張子.htmlのままPHP実行可能にする」をご覧ください。)
Movable Typeの場合、設定でアーカイブの拡張子をphpにします。
また、トップページなどにもphpを使用する場合は、そのインデックス・テンプレートの出力ファイル名の拡張子も「.html」「.htm」などから「.php」に変更してください。
(*すで公開されている方で、ページ名(index.htmlなど)までを他のサイトなどにリンクしてもらっている方は、今までのページの拡張子が変わるためURLが変わりますのでご注意ください。)

拡張子を .html から .php に変更したページ(テンプレート)の一行目でXML宣言をしている場合は、
<?xml version="1.0" encoding="<$MTPublishCharset$>"?>
という一行目の宣言を
<? echo('<?xml version="1.0" encoding="<$MTPublishCharset$>"?>') ?>
へ変更してください。

私もXML宣言をしているのでですが、最初この変更のことに気付かずに、構築したページにエラーが出てページ自体が表示できませんでした。XML宣言をちゃんとしている方は、この変更を忘れずに。
(.htaccessに「php_flag short_open_tag off」を記述している場合は、上記の変更によりエラーが出るのでこの一文を削除してください。)

以上の変更が終わったら.phpの拡張子でちゃんとページの表示ができているか確認してください。
サーバ上には変更前の「.html」「.htm」のファイルが残っていますので、こちらは構築されなくなるため削除してください。

拡張子.htmlのままPHP実行可能にする

先の方法は.phpへ拡張子を変更しましたが、
拡張子.htmlのままPHP実行可能にする方法があったようです。(ちにゃと先生ありがとうございました!)
.htaccessに以下の一文を加えれば良いようです。(Apacheの設定で.htaccessが使えることが前提です。)

AddType application/x-httpd-php .html

.htaccessがない場合は、テキストエディタ等で上記の一文を入れて「.htaccess」という名前(HTACCESSファイル)で保存してトップディレクトリにアップロードすればOKです。

Apacheの設定ファイルhttpd.confを直接設定できる場合は、以下のように最後に「.html」を加えた一文に設定すれば良いようです。

AddType application/x-httpd-php .php .php4 .html

(さくらのレンタルサーバご利用の方は上記方法が有効ではないようです。さくらのレンタルサーバ非公式FAQ「.php以外の拡張子でphpを動かしたい」に方法が書かれています。)

拡張子.htmlのままPHP実行可能にする方法は調べたところ、場合によっては重くなったり、アクセスの多いサイトだとサーバーに負荷がかかる可能性もあるそうですが、既に.htmlで公開されているページにPHPを組み込む場合には非常に良いですね。

さて、本題のnewマーク表示の方法。

新しいエントリーにnewマークを表示させる

このサイトでは、homeと、blogカテゴリーアーカイブの右ナビゲーション内"New entry"と、blog総合エントリー一覧に表示させています。
<MTEntries>と</MTEntries>の間で、<$MTEntryTitle$>の前後など表示をさせたい場所に以下を記述します。
<?php
$targetdate = strtotime('<$MTEntryDate format="%Y/%m/%d %H:%M:%S"$><$MTBlogTimeZone$>');
$nowdate = time();
if($nowdate -$targetdate < 72*3600){
print <<< HERE
<img src="/img/new.gif" alt="new" width="15" height="15" />
HERE;
}
?>

ピンク字の「72」は=72時間で、ここがnewマークを表示させておく期間になります。
ここを自分の好きな時間に変更してください。
私は3日間表示させているので「72」にしています。

img部分は表示させたい画像、またはテキストを指定してください。

新しいコメントにnewマークを表示させる

このサイトでは、blogカテゴリーアーカイブの各記事の下と、blogエントリーアーカイブの各コメント内と、blog総合エントリー一覧に表示させています。
<MTComments>と</MTComments>の間で、こちらも好きな場所に以下を記述します。
<?php
$targetdate = strtotime('<$MTCommentDate format="%Y/%m/%d %H:%M:%S"$><$MTBlogTimeZone$>');
$nowdate = time();
if($nowdate -$targetdate < 72*3600){
print <<< HERE
<img src="/img/new2.gif" alt="new" width="15" height="15" />
HERE;
}
?>

新しいエントリーで指定した時と同様に、表示させる時間と、img部分を変更してください。

以上でおしまいです。

あとはエントリーやコメントがあったらすぐ自動でnewマークを表示してくれて、
指定した時間が経つと自動でnewマークが消えます。
なんて便利でらくちんなんでしょう!
エントリーは自分が投稿しているので自分ではわかるのですが、新しいコメントにnewマークを表示させることはコメントをいただいた時に私もすぐ気付くことができるのでとても良いです。

ただ、このnewマーク、くせものです。
だって、newマークが消えないうちに更新をしなくちゃっ!って気になるので(笑)

色々調べて色々試してこうなっていますが、もし何かお気付きの点がありましたらぜひお知らせください。
みなさんの参考に少しでもしていただけたら幸いです。

追記 2006.11.12

拡張子.htmlのままPHP実行可能にする」項目を追記しました。
time 2006.08.09 (Wed)  |  音声読み上げ音声読み上げ

Comments

ちにゃと

お使いのレンタルサーバーだとapacheの設定ファイルhttpd.conf は触れないですか?
可能なら下のように設定すればHTMLでもPHPが動く筈です。

AddType application/x-httpd-php .php .php4 .html

仕事の案件ではセキュリティー上からhtmlの拡張子でPHP動かしています。
レンタルサーバーによってはフォルダ単位で.htaccessに上記の1行を記述してOKなものもあります。

time 2006.11.12 (Sun) 05:58
pas

ちにゃと先生ありがとうございます!!

私の使っているサーバでは.htaccessに書けば良いようです。
そんな簡単でhtmlの拡張子を変えない方法があったのですね。さすがちにゃと先生!勉強になりました!

私はもう拡張子をphpにしてあるのでとりあえずこのままでいくと思いますが、他のみなさんのために追記しておきますね。
本当にありがとうございました♪

time 2006.11.12 (Sun) 11:08

はじめまして。簡単にNEWマークを付けるのを調べていたら、ここに辿り着きました。自分には凄く分かりやすく、すぐ導入させていただきました。ありがとうございます。とても読みやすかったので、また参考にさせてください^^

time 2007.07.16 (Mon) 17:23
pas

ssiwさん、はじめまして!
コメントをいただきありがとうございます♪
お役に立てて嬉しいです。

PS.
サイト素敵ですね!
SRは私は乗っていませんでしたが(乗れないので^^;)
私の友達が何人か乗っていてかっこいいなと思っていました。
クールなところがとても好きです。

time 2007.07.17 (Tue) 10:12

Please comment!

*必須

*必須 (公開はされません)

*必須

Track back