記事No | : 14040 |
投稿日 | : 2015/05/28(Thu) 10:33:40 |
タイトル | : Web-Patio 新着投稿があった際Newマークの表示 |
ID情報 | : st_002 |
投稿者 | : st |
URL | : http://www.alma-web.net/patio/list.cgi |
いつもお世話になっております。
掲示板Web-Patioにて、新着投稿があった場合、トピックス一覧のトピックス名の横に、Newマークを設置したいと思っております。
例えば、新着投稿があった12時間以内のトピックスにNewマークを付ける事が出来れば幸いです。
大変恐縮ですが、お力添え頂けませんでしょうか。
よろしくお願いいたします。
記事No | : 14042 |
投稿日 | : 2015/05/28(Thu) 14:18:47 |
タイトル | : Re: Web-Patio 新着投稿があった際Newマークの表示 |
ID情報 | : hirayama |
投稿者 | : hirayama |
URL | : http://shade-search.com/sts/fsw/wiki.cgi |
WEB PATIOは更新時間がエポック秒ではなく、日付の文字列としてログに保存されているので、少し面倒です。
日付文字列からエポック秒を取得した上で、現在のエポック秒との差を計算し、それが12×3600秒以内だったらNew表示します。
まず、tmplディレクトリ内のbbs.htmlで、New表示したい場所に「!new!」という文字列を追加します。
!topic!の前あたりがいいでしょう。
そしてpatio.cgiのsub bbs_list内の最後のほう
print $tmp;
の行の前に
# 日付文字列から年月取得
my $y = substr($upd,0,4);
my $mo = substr($upd,5,2);
my $d = substr($upd,8,2);
my $h = substr($upd,-5,2);
my $mi = substr($upd,-2,2);
# Time::Localモジュールを宣言
use Time::Local 'timelocal';
# エポック秒を取得
my $epc = timelocal(0, $mi, $h, $d, $mo-1, $y-1900);
my $new_str = '';
my $new_hour = 12;# New表示する時間
if (time() - $epc < 3600 * $new_hour) {
$new_str = '<span style="color:red">New!</span> ';# New表示の内容
}
$tmp =~ s/!new!/$new_str/g;
を追加します。
Newをテキストではなく、画像ファイルで表示したいなら、$new_str = 部分を
書き換えてください。
記事No | : 14047 |
投稿日 | : 2015/06/02(Tue) 10:27:04 |
タイトル | : Re^2: Web-Patio 新着投稿があった際Newマークの表示 |
ID情報 | : st_002 |
投稿者 | : st |
URL | : http://www.alma-web.net/patio/list.cgi |
>hirayama 様
ご返信遅れまして大変申し訳ございません。
>日付文字列からエポック秒を取得
他のcgi掲示板のソースを拝見したり、調べたり自分なりに色々試してみたのですが、ご教授頂いた答えとは全然見当違いのようでした(苦笑)
プログラムはやはり難しいですね。
すいません、余談でしたがありがとうございました!
ご丁寧にご教授頂けたおかげで実装する事が出来ました。本当にありがとうございます。
ご返信遅くなってしまいましたことのお詫びと、お礼申し上げます。