################################# # # 12ch 各板の RSS (RSS2.0)出力 # # #1)私もまだ、使い込んでいません # 自己責任でお使いください #2)サポートは # http://pc8.2ch.net/test/read.cgi/hp/1148148318/l50 # http://bbs.mitinoku.jp/m_support/ # ################################# #  2007/06/01 Ver 1.0 # # ################################# # 12chに標準で組み込まれているjcode.plは,utf8に未対応です。 # その為、このプログラムで作成されるRSSファイルの文字コードはEUCとなってます。 # 一般にRSSファイルは文字コードとしてutf8が多いようですが、utf8が絶対ではありません。 # Sjisなどutf8以外のRSSもあります。 # # jcode.plの後継jcode.pm(perl5以上)を使える方は # Step2の部分の # 3箇所ある #For UTF8 の下の行コメント(2行+2行+3行)を外すと #  UTF8になります # ## Encode・・Perl5.8以降標準をご存知の方は、ご自由に # # ################################## ###●Step0 RewriteEngine(Mod Rewrite) # .htaccessに下記2行を追加 RewriteEngine on RewriteRule ^read/(.*)/(.*)/l(.*) read.cgi?bbs=$1&key=$2&ls=$3 [L] 注) RewriteEngine(Mod Rewrite)が成功してる事を確認すること。  ここで http://〜〜〜/read/板名/スレナンバー/l50 と  http://〜〜〜/read.cgi?bbs=板名&key=スレナンバー&ls=50 が同じ事を確認 ########################################## ###●Step1 #  bbs.cgiの改造 # #----下記を探す(sub makeindexfile内) #------------------------------------- my @headlinehtml; push (@headlinehtml, makesubback($bbs,@ThreadData)); OutputData(file => "./$bbs/subback.html", lock => $bbslockdir, data => \@headlinehtml) ; # #-- その下に下記4行追加を------------- # #RSS フィード 200706-------------------- my @rss; push (@rss, makerssfeed($bbs,@ThreadData)); OutputData(file => "./$bbs/rss.xml", lock => $bbslockdir, data => \@rss) ; ########################################## ###●Step2 #  bbs.cgiの改造 一番下に追加 #-- 追加 ここから -------------------------- # RSSフィード(スレッド一覧)作成 200706 sub makerssfeed { $rss_max = 20; #表示件数の最大値 $rss_encode = "euc-jp"; #default encode #For UTF8 # $rss_encode = "UTF-8"; # require Jcode; #jcode.pm my ($bbs,@td) = @_; my ($ipath,$ibase,$iext) = SplitFileName($ENV{SCRIPT_NAME}); my @t = localtime($time); my($r_year,$r_mon,$r_mday,$r_hour,$r_min,$r_sec,$r_wday) = ($t[5]+1900, $t[4]+1, $t[3], $t[2], $t[1], $t[0], $t[6]); my $r_dname = ("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat")[$r_wday]; my $r_mname = ("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")[$r_mon - 1]; $rss_time= sprintf("$r_dname, %02d $r_mname $r_year %02d:%02d:%02d +0900",$r_mday,$r_hour,$r_min,$r_sec); $top_r_title = $bbstitle ; $top_r_desc = "$bbstitle の最新投稿トップ $rss_max"; #For UTF8 # Jcode::convert(\$top_r_title 'utf8', 'euc'); # Jcode::convert(\$top_r_desc 'utf8', 'euc'); $top_r_link = "http://$ENV{SERVER_NAME}$ipath$bbs/"; $top_r_image = "http://$ENV{SERVER_NAME}$ipath"."rss_logo.jpg"; if($topimg ne ''){ $top_r_image = "$topimg"; } my $msb = <<"EOF"; $top_r_title $top_r_link $top_r_desc ja $rss_time $rss_time $top_r_image $top_r_title $top_r_link $top_r_title EOF my $i = 1; foreach (@td) { if($i > $rss_max){last;} #最大表示件数 chomp; my ($key,$title,$res) = split /\f/; $rss_title = "$title"; $rss_cat = "$bbstitle"; $rss_desc = "$bbstitle $title"; #For UTF8 # Jcode::convert(\$rss_title 'utf8', 'euc'); # Jcode::convert(\$rss_cat 'utf8', 'euc'); # Jcode::convert(\$rss_desc 'utf8', 'euc'); $rss_link ="http://$ENV{SERVER_NAME}$ipath" . "read/$bbs/$key/l50"; $msb .= "\n". "\t" . "$rss_title\n". "\t" . "$rss_cat\n". "\t" . "$rss_link\n". "\t" . "$rss_desc\n". "\t" . "$rss_time\n". "\n"; $i++; } $msb .= <<"EOF"; EOF return $msb; } #-- ここから まで -------------------------- ########################################### ###●Step3 #  base.html <!--#bbstitle#-->  の上に 下記を1行追加 ########################################### ###●Step4 # bbs.cgiと同じ階層に   ファイル名 rss_logo.jpg  120×60程度  の画像ファイルを設置 # #-- 終了!----------------------- ########################################### ###○確認方法 #  1:管理画面で Remake もしくは新規に投稿  2:IE7で、RSSマーク(オレンジの□)が表示される か    直接 http://〜〜/板名/rss.xml を入力。    参考)IE7のRSSリーダー  http://www.itmedia.co.jp/bizid/articles/0610/20/news076.html ################################################## 参考) jcode.plの後継jcode.pm http://openlab.jp/Jcode/index-j.html  通常、makeしますが、設置するだけでもなんとか..使えるようです。   http://tech.bayashi.net/faq/jcodepm.html