Web Café Weblog - Archive
ape board XHTML 化
Last Modified : Sat, January 06 22:02:07 2018
2003-12-13 / ape board XHTML 化
apeboard 掲示板を改造するにあたり XHTML 1.1 にするために数々の修正が必要だったので、ここに記す。誰かの役に立てば嬉しい。
apeskin.html
メイン表示用のスキンファイル。テーブルレイアウトなので、これをすべて改変。ここでの注意点としては、コメントとして書いてある部分は、CGI 側で使用するので、「なんだよ、このコメントは」とか思って消さないように。逆にいかにも変数というものは記述されていない。さらに、掲示板自体の apeboard_plus.cgi のファイル名を変更した場合は、form 要素 action 属性値を変更する。2ヶ所。
ここでは、私自身のカスタマイズになってしまうけれど、デフォルトの状態では、投稿者の星座を選択するものと、パスワードを入力し、投稿者自身が削除するなどの機能があるが、以前から利用していた掲示板ではない機能だったので、閲覧者の混乱を生じさせないように、該当する部分は思い切って削除した。
res_file.html
リプライ用のスキンファイル。ほぼ apeskin.html に準じる。
boardini.cgi,apeboardp_mt.cgi,skinini.cgi
この 3 つのファイルは、主に設定と、サブルーチンがある。設定は個人の好みで決まるものなので、ここでは言及しない。
apeboard_plus.cgi
いよいよメインの掲示板自体に手を入れます。注意しなければならないのは、常に Back up をとっておいて、500 Internal Server Error に備えましょう。理想を言うならすべて改変してからではなく、変更を少しずつしてから、アップロードし、実行を確認するべきです。
以下は、変更箇所です。
おおよそ 107 行目付近
$message =~ s/\r/<br>/g;
post メソッドで受け取った値を、変数に代入している部分の後半で、$message の改行コードを、<br> に変換している部分を以下のようにします。
$message =~ s/\r/<br \/>/g;
おおよそ 123 行目付近
$message =~ s/(<[^&]*)<br>([^&]*>)/$1$2/gi;
HTML の記述を認める設定にした場合の処理を行っている部分を以下のようにします。
$message =~ s/(<[^&]*)<br \/>([^&]*>)/$1$2/gi;
おおよそ 432 行目付近
$restmp =~ s/resicon<!--s-->/<img src="$icon_path$dresicon\.$icon_format" width="$icon_width" height="$icon_height" alt="$dresicon" border="0">/i;
アイコンを利用した場合の処理を行っている部分を以下のようにします。
$restmp =~ s/resicon<!--s-->/<img src="$icon_path$dresicon\.$icon_format" width="$icon_width" height="$icon_height" alt="$dresicon" \/>/i;
おおよそ 459 行目付近
$fot_html =~ s/(a href="back")/a href="$thisurl?command=read_message&msgnum=$nextmsg"/i;
掲示板内のナヴィゲーションで、ハイパーリンク先を決めている部分を以下のようにします。
$fot_html =~ s/(a href="back")/a href="$thisurl?command=read_message&msgnum=$nextmsg"/i;
おおよそ 571 行目付近
$res_head_html =~ s/<input type="hidden" name="command".+>/<input type="hidden" name="command" value="reswrite">\n<input type="hidden" name="target" value="$dispid">/i;
リプライ用の画面設定で、input 要素の置き換えをしている部分を以下のようにします。
$res_head_html =~ s/<input type="hidden" name="command".+>/<input type="hidden" name="command" value="reswrite" \/>\n<input type="hidden" name="target" value="$dispid" \/>/i;
おおよそ 585 行目付近
$res_mainhtml =~ s/icon<!--s-->/<img src="$icon_path$dispicon\.$icon_format" width="$icon_width" height="$icon_height" alt="$dispicon" border="0">/i;
リプライ用の親記事アイコン設定で、img 要素をスキン内の icon<!--s--> と置き換えをしている部分を以下のようにします。
$res_mainhtml =~ s/icon<!--s-->/<img src="$icon_path$dispicon\.$icon_format" width="$icon_width" height="$icon_height" alt="$dispicon" \/>/i;
おおよそ 644 行目付近
$res_restmp =~ s/resicon<!--s-->/<img src="$icon_path$dresicon\.$icon_format" width="$icon_width" height="$icon_height" alt="$dresicon" border="0">/i;
リプライ用の子記事アイコン設定で、img 要素をスキン内の resicon<!--s--> と置き換えをしている部分を以下のようにします。
$res_restmp =~ s/resicon<!--s-->/<img src="$icon_path$dresicon\.$icon_format" width="$icon_width" height="$icon_height" alt="$dresicon" \/>/i;
985 行目付近から、1055行目付近 / 記事のリンクを定義している部分。
target="_blank" を削除。</A> を </a> へ変更。
1474 行目付近以降/エラー表示のサブルーチン部分。
print を一行一行に使っているのを、ヒアドキュメントにして見通しをよくしながら、自分のサイトにあったものに変更します。僕の例を参考にしてください。
print "Content-type: text/html; charset=Shift_JIS\n";
print "\n";
print <<"END";
<?xml version="1.0" encoding="shift_jis"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
中略
<h4>Error</h4>
<dl>
<dt>$msg</dt>
<dd>管理者に、問題を知らせる場合は <a href="$admin">$admin</a>まで、フィードバックしてください。</dd>
</dl>
</div>
</div>
</body>
</html>
END
exit(0);
以上で、大体大丈夫なはずです。アイコン表示に関しては、僕が利用していないので、参考にする程度にしてください。また、これは改造ですので、配布などは禁止されているはずですので、お気をつけください。
Trackback Data
- この記事に対する Trackback
- https://web-cafe.biz/~prelude/diary/mt-tb.cgi/1057
- この記事のリンク先
- "ape board XHTML 化" @Web Café Weblog