20061128

strictな出力に無駄に拘る掲示板

KENT-WEB様の傑作スクリプト “YY-BORD”。アイコン式掲示板の超定番スクリプトでございます。
でもこのスクリプト…吐き出すソースがお世辞にも綺麗とは言えないのが弱点なんですよね。タグの表記が大文字だったり小文字だったりバラバラだし、プロパティの値もクォーテーションマークで括ってあったり括ってなかったり…さらには流石に今時のWEB事情から言っても<font>や<div align="center">をふつーに使うってのも頂けません。ま、そもそも “スタイルシート”や “WEB標準”なんて概念が存在しなかった古い時代に書かれたソースを長い時間をかけてバージョンアップし続けてきた長命のスクリプトなのですから、しょうがない事なのかもしれませんがね。そんな風に考えていたらある日、
べ、別にアンタを喜ばせる為に作ったんじゃないんだからね!!
と、もっともな意見がツンデレっぽく聞こえてきた気がするので、なんとかしてみました。しかも適当に。

動作見本

YY-BOARDからの変更点

  1. HTML4.0以降に非推奨となった要素の撤廃。
  2. 非推奨にはなっていないが、論理的意味を持たない要素の撲滅(<b>とか<span>とか<hr>とか)
  3. スクリプト内の設定で装飾されていた個所の削除(全ての装飾のスタイルシート化)
  4. インデントの為に使用していたと思われる<blockquote>を抹殺。
  5. ツリー構造になっていなかった一部のタグ構造の見直し。
  6. ドキュメントタイプをXHTML1.0Transitionalに。それに伴い吐き出すソースのXHTML化(省略されていた閉じタグの追加等)
  7. HTMLのヘッダー部及びフッター部作成サブルーチンを別ファイル化(→module.pl)
  8. 表示するラベル類の設定もまとめて別ファイル化(→label.pl)
  9. メッセージ内にてHTMLタグも使用できるオプションを追加(非推奨)
  10. 日本語がないメッセージの書き込みを禁止する ルーチンを追加(スパム対策)
  11. メールアドレスを数値文字参照(10進数)で表記
  12. 折角なのでW3CのHTML VALIDATORへのリンクを貼り付けてみたwwww

 
と、こんな感じ。テキストにするとたったコレだけですが、スゲー大変でしたよ?いやマジで。
ベースにしたスクリプトはYY-BORDのv5.8。機能は全てv5.8に準じます(オミットした機能は一切ありません)

ダウンロード

設置手順

付属ファイルが多いので眩暈を起こしそうですが、設定しなきゃならないファイルはたったの4つだけです。

perlへのパスの設定

bbs.cgiとregi.cgiとregikey.cgiの先頭の1行目、perlへのパスを必要があるなら変更します。デフォルトでは!/usr/local/bin/perlになっています(大概の方は変更の必要がないと思います)

ini.plの変更

ini.plの72行目$homepage = 'http://';のシングルクォーテーション内に戻り先(つまりは掲示板を使用するWEBサイトのトップページとか)のURLを記述してください。以上で最小限の設定は完了です。

アップロード

設定が終わればあとはアップするだけ。圧縮ファイルを解凍してできた『strictyy』フォルダ内の全てのファイル、フォルダを転送してください。(勿論この時、画像以外のテキスト系のファイルは全てアスキーモードで転送するのはお約束)
ini.pl内に記述してあるパーミッションを参考に、転送したファイルの属性変更を行ってください。特に何も指定されていないフォルダやファイルは、デフォルトのままで構いませんので気にしない方向で。

以上でとりあいず設置完了です。早速アップしたばかりのbbs.cgiにブラウザでアクセスしてみてください。ね?大丈夫だったでしょ?

大丈夫じゃNEEEEEEEEEE!!

という困ったちゃんはチェックモードを試してみましょ。bbs.cgiを呼び出すURLの最後に?mode=checkという引数を付けてブラウザで呼び出してみてください。“NG”と指摘された個所がなんか駄目っぽいのでなんとかしてあげましょう。
え?チェックモードですら “500エラー” が帰ってきて表示できない?それは何かが根本的に、かつ致命的に間違っています。思いきって全ての作業を最初からやりなおしてみましょう。
(おそらく転送時にミスっていると思われます。もう一度、サーバーにアップした全てのファイルを削除して、モードをきちんと確認して再転送してみましょう。FTPクライアントソフトの方でアスキーとバイナリをオートで振り分ける設定にしているならば、手動でアスキーモードですべてのテキスト系ファイル【.cgi .dat .pl】を強制的に転送してみましょう。なお、文字コードはシフトJISのままにしてください。あとはパーミッションを正確にに変更してください。もしこれで動かないならスクリプト自体がおかしいです。設定をイジる時に消しちゃいけない個所を消してしまった恐れがありますよ?)

カスタマイジング

動作が確認できたら、今度は徹底的にカスタムしてあげましょう。
 ■機能、及び動作に関する設定 → ini.pl
 ■表示するテキストに関する設定 → label.pl
 ■HTMLのヘッダー、及びフッターの内容 → module.pl
 ■掲示板内でのみ適用されるCSS → magokoro.css
 ■その他のスタイルシート → styles-site.css
各ファイルの受け持ちはこんな感じです。
何はともあれセキュリティの為に、ini.pl内のパスワードだけは変更しておいた方が良いでしょう。

Tips:MT用テンプレートを流用してみる

ちなみに、付属しているstyles-site.cssの内容はMobableType3.1系のデフォルトCSSと全く同じ物です。MT用のテンプレート配布サイト様からお気に入りのデザインのスタイルシートファイルをダウンロードして、styles-site.cssに上書きすればCSSを書けない方でも簡単に、そして本格的なデザイン変更ができます。(但しMT3.1用の物に限ります。3.2以降のMT用テンプレートを使用する際にはmodule.plも併せて書き換えてやる必要があります)
例えばDr.blogさんなんかですと、ver.1.0のスタイルシートがそのまま利用可能です。
Dr.blog -ブログ研究室- MovableType テンプレート無料配布
テンプレートをそのまま使うも良し、テンプレートをベースにアレンジを施してオリジナルに改造するも良し、可能性は無限です。

[CLAP]

トラックバック

このエントリーのトラックバックURL:
http://magokorokikaku.com/mt/mt-tb.cgi/30