- 締切済み
kentさんCGIの改造方法について
KENTさんで配布されている「Topics Board」を改造をしたいと思っています。 http://www.kent-web.com/bbs/topics.html 改造内容は、現在は日記がひとつのブロックとして縦に並んで表示されますが、これを2日、3日分を横に3ブロック表示したら、折り返して2段目に縦に表示する方法がわかる方がいらしたら教えてください。 初心者なので、簡単に改造ソースを書いていただけるとありがたいです。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
単純に横3ブロックずつ表示さえされれば良いのであれば、プログラム側から<TABLE>タグ等を追加するように変更してやればいいです。 だいたいこんな感じでしょうか。 * topics.cgi(100行目~) # データ読み込み @loop=(); $i=0; $item=0; # 追加 open(IN,"$logfile") || &error("Open Error: $logfile"); while (<IN>) { $i++; next if ($i < $page + 1); next if ($i > $page + $pagelog); #ここから追加 if($item==0) { push(@loop,'<P><Table cellspacing=0 cellpadding=0 width="85%" border=0><Tr>'); $item ++; } elsif($item==3) { push(@loop,'</TR></TABLE>'); $item = 0; } else { $item ++; } #ここまで追加 $msg = $loop; ($no,$date,$sub,$com,$t[0],$w[0],$h[0], $t[1],$w[1],$h[1],$t[2],$w[2],$h[2]) = split(/<>/); # URLリンク &auto_link($com) if ($autolink); $msg =~ s/!subject!/$sub/i; $msg =~ s/!date!/$date/i; $msg =~ s/!comment!/$com/i; # 画像 foreach $i (0 .. 2) { $j = $i + 1; $image = "!image-$j\!"; if (!$t[$i]) { $msg =~ s/$image//i; next; } if ($h[$i] && $w[$i]) { $wh = "width=$w[$i] height=$h[$i]"; } else { $wh=""; } $msg =~ s|$image|<a href=\"$imgurl$no-$j$t[$i]\" target=\"_blank\"><img src=\"$imgurl$no-$j$t[$i]\" border=0 align=top $wh></a>|i; } push(@loop,$msg); } if($item!=0){push(@loop,'</TR></TABLE>');} # 追加 * tmp.html(24行目) <!-- line1 --> <Td bgcolor="#8080C0"> <table cellspacing=1 cellpadding=5 width="100%" border=0> <tr bgcolor="#DCDCED"><td bgcolor="#DCDCED"> <b style="font-size:15px;color:#000000">!subject!</b></td></tr> <tr bgcolor="#003399"><td bgcolor="white"> <dl><dt><span style='font-family:Verdana'>!date!</span><br><br> <dd>!comment!<P> !image-1! !image-2! !image-3! </dl></td></tr></table></TD> <!-- line2 --> 段の先頭と末尾にに<TABLE>タグや<TR>タグ等をプログラム的に挿入してやっています。 スキンファイルは1ブロック分のデータの先頭と末尾の<P>~<TR>、</TR>~</TABLE>部分をそれぞれ削除しています。 ただ、これでは完全にスキンファイルから表示スタイルを変更できませんし(<TABLE>タグなんかをCGIファイルに埋め込んだから)、1段に2ブロックしか表示しない場合は横に伸びて表示されたりします。 また、横のブロックは3つともつながってしまいます。 ここから先はご自分で頑張ってみてください。 ヒントとしては前者はtopics.cgiの84行目からテンプレートを読み込むコードが書かれていますので、そこをよく読んでみてください。 後者は動的に追加する<TABLE>タグなどに工夫を加えるだけで実現できますよ。(HTMLの変更だけです)
お礼
ありがとうございます。 早速改造を行い実行しまた。できました。あと細かいデザインについは何とかがんばってみます。またありましたらお願いします。