#!/usr/local/bin/perl #------------# # 基本設定 # #------------# # 外部ファイル取り込み require './cgi-lib.pl'; require './jcode.pl'; # ログファイル $logfile = './topics.dat'; # テンプレート $tmpfile = './tmp.html'; #ニュース詳細部分テンプレート $tmp_box = './tmp_news.html'; # 画像ディレクトリとそのURL $imgdir = './img/'; $imgurl = './img/'; # 1ページあたり表示件数 $pagelog = 1; #ページ内画像最大表示サイズ $w_max = 280; $h_max = 280; # 戻り先URL $home = '../index.html'; # URLの自動リンク (0=no 1=yes) $autolink = 1; #ナビボタンの表示(0:非表示、1:表示) $nv_home = 0; $nv_top = 0; $nv_back = 0; $nv_next = 0; #▼モジュール読み込み用パス PSK-NET 2013.11.26 追加 #※★★★★★【新しくモジュールを追加する場合】★★★★★ # 1.(*1)にモジュールパスを追加 # 2.(*2)に代替え変数を追加 # 3.(*3)[記事表示」部にテンプレートファイルのモジュール置き換え処理を追加 $PCt=0; $htmp[$PCt++] = "../modules/analytics.html"; #グーグルアナリティクス $htmp[$PCt++] = "../modules/header.html"; #ヘッダー $htmp[$PCt++] = "../modules/side_menu.html"; #サイドメニュー $htmp[$PCt++] = "../modules/footer.html"; #フッター #$htmp[$PCt++] = "(パスを記入)"; #★★★★★↑(*1)ここに新しいModule FileのPathを追加★★★★★ #《注意》モジュールの追加があってもこのfor分の中身は変更する必要はありません。 $i=0; foreach $tg (@htmp) { if (-f $tg) { @tag_in=(); open(HTTAG_IN, "$tg") || &error("Open Error: $tg"); @tag_in = ; close(HTTAG_IN); $module[$i]=""; foreach (@tag_in) { $module[$i] .= $_; } } $i++; } #配列をわかりやすく変数に代入 #※新しく読み込むモジュールを追加した時は、 # $変数名 = $module[$PCt++]; # このようにして一覧の下に追加してください。 # =(イコール)の右側はすべて同じですので触らないでください。 $PCt=0; $Google = $module[$PCt++]; #グーグルアナリティクス $Header = $module[$PCt++]; #ヘッダー $Sidemn = $module[$PCt++]; #サイドメニュー $Footer = $module[$PCt++]; #フッター #$(変数名) = $module[$PCt++]; #追加モジュール名 #★★★★★↑(*2)ここに新しいModule FileのPathを追加★★★★★ #▲モジュール読み込み用パス追加(ここまで) #--------------------# # フォーム読み込み # #--------------------# &decode; #------------# # 記事表示 # #------------# local($flag,$msg,$i,$next,$back,$loop,@head,@loop,@foot); # HTMLヘッダ print "Content-type: text/html\n\n"; # テンプレート読み込み #▼変数の初期化 $loop=""; @head=(); @foot=(); $flag=0; #▼テンプレートファイルの読み込み open(IN,"$tmpfile") || &error("Open Error: $tmpfile"); # ▼テンプレート読み込み ---------------------------------------------------- $loop=""; @head=(); @foot=(); $flag=0; # ログファイルの読み込み open(IN,"$tmpfile") || &error("Open Error: $tmpfile"); # テンプレートファイルからモジュールがあれば置き換える while () { s//$Google/g if(//); #グーグルアナリティクス s//$Header/g if(//); #ヘッダー s//$Sidemn/g if(//); #サイドメニュー s//$Footer/g if(//); #フッター #s//$(*2で設定した変数名)/g if(//); #★★★★★↑(*3)ここに新しいModule Fileの置き換え命令を追加★★★★★ push(@template, $_) ; } close(IN); # ▲------------------------------------------------------------------------- # ▼データ読み込み→配列に逆順で代入 ---------------------------------------- open(INN,"$logfile") || &error("Open Error: $logfile"); @inn = ; close(INN); #レコード数取得 $hcount=@inn; #配列の中身を逆順にする。 @inn = reverse(@inn); # ▲------------------------------------------------------------------------- # ▼ループして必要な記事だけを配列に代入(記事用配列は @loop)-------------- @loop=(); $i=1; require "./$tmp_box"; foreach (@inn) { $i++; # #ループ内で必要な分だけループにかかり、不要な分はループを通さないようにしているらしい。 # next if ($i < $page + 1); #$pageは&decord内で定義されている。 # next if ($i > $page + $pagelog); ($no,$date,$sub,$com,$t[0],$w[0],$h[0],$t[1],$w[1],$h[1],$t[2],$w[2],$h[2]) = split(/<>/); if($in{'page'} == $no) { #読み込んだデータの番号と、選択したpageが一致したら表示するように変更 #記事部分のテンプレHTMLを表示用に代入 $msg = $news_section; $msg_title = $sub; #●●●●● PSK-NET 2014.07.16追加(1/2) # 記事内容の中に、リンクが存在するときは、URLリンク付に置き換える &auto_link($com) if ($autolink); $msg =~ s//$no/i; $msg =~ s//$sub/i; $msg =~ s//$date/i; $msg =~ s//$date/i; $msg =~ s//$com/i; # 画像 foreach $i (0 .. 2) { $j = $i + 1; $image = ""; if (!$t[$i]) { $msg =~ s/$image//i; next; } if ($h[$i] >= $w[$i]) { $smb_w=$w[$i]*$h_max/$h[$i]; $wh = qq| width="$smb_w" height="$h_max"|; } else { $smb_h=$h[$i]*$w_max/$w[$i]; $wh = qq| width="$w_max" height="$smb_h"|; } $msg =~ s|$image||i; } push(@loop,$msg); } } close(IN); # ▲------------------------------------------------------------------------- # ▼ヘッダ表示→《ページ全体を表示》に変更 ---------------------------------- foreach (@template) { s//$backBtn/ if($nv_back == 1); s//$nextBtn/ if($nv_next == 1); s//HOMEページ<\/a>/ if($nv_home == 1); if ($pageBtn) { s///; } else { s//TOPページ<\/a>/ if($nv_top == 1); } if(//) { s//$msg_title/g; } #●●●●●PSK-NET 2014.07.16 変更(2/2) if(//) { s//@loop/g; } print; } # ▲------------------------------------------------------------------------- exit; #====[Sub Routine]==== ====[Sub Routine]==== ====[Sub Routine]==== ====[Sub Routine]==== ====[Sub Routine]==== ====[Sub Routine]==== ====[Sub Routine]==== #--------------# # エラー処理 # #--------------# sub error { &header; print <<"EOM";

ERROR !

$_[0]

EOM print &HtmlBot; exit; } #-----------------# # 自動URLリンク # #-----------------# sub auto_link { $_[0] =~ s/([^=^\"]|^)(https?\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%]+)/$1
$2<\/a>/g; } #--------------# # HTMLヘッダ # #--------------# sub header { if ($headflag) { return; } print "Content-type: text/html\n\n"; print <<"EOM"; $ver EOM $headflag=1; } #----------------# # デコード処理 # #----------------# sub decode { local($key,$val); &ReadParse; while ( ($key,$val) = each %in ) { if ($key !~ /^upfile/) { # シフトJISコード変換 &jcode'convert(*val, 'sjis'); # タグ処理 $val =~ s/<>/<>/g; $val =~ s/&/&/g; $val =~ s/"/"/g; $val =~ s//>/g; # 改行処理 if ($key eq "comment") { $val =~ s/\r\n/
/g; $val =~ s/\r/
/g; $val =~ s/\n/
/g; } else { $val =~ s/\r//g; $val =~ s/\n//g; } } $in{$key} = $val; } $mode = $in{'mode'}; $page = $in{'page'}; } __END__