KENT-WEB サポートコーナー 過去ログ [ 0132 ]


記事No: 14040
投稿日: 2015/05/28(Thu) 10:33:40
タイトルWeb-Patio 新着投稿があった際Newマークの表示
ID情報: st_002
投稿者: st
URLhttp://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
URLhttp://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>&nbsp;';# 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
URLhttp://www.alma-web.net/patio/list.cgi

>hirayama 様

ご返信遅れまして大変申し訳ございません。

>日付文字列からエポック秒を取得
他のcgi掲示板のソースを拝見したり、調べたり自分なりに色々試してみたのですが、ご教授頂いた答えとは全然見当違いのようでした(苦笑)
プログラムはやはり難しいですね。

すいません、余談でしたがありがとうございました!
ご丁寧にご教授頂けたおかげで実装する事が出来ました。本当にありがとうございます。

ご返信遅くなってしまいましたことのお詫びと、お礼申し上げます。


[検索ページ] [掲示板]