テクニカルというほどのものでもありませんが、Pai-boardのレイアウトが気に入らない方、HTMLに厳格にこだわる方、perlスクリプト自体を改造、改良、勉強(こんな汚いコードで勉強できるか謎ですが…。)したい方のためのPai-boardの仕組みのヒントです。しかし、はじめに使用条件に同意なさることを条件とします。
改造した場合、どの程度からが著作権を宣言して良いのか。それは私たちも分かりません。プログラム内には独自のコードが多く含まれていますが、定石的なコードも多々あります(例えばCookie取得、書き込み関数など)。プログラマの皆さんはそれぞれの良識の範囲内において改造し、自分のコードに含めるなり、なさってください。
あえて、perlスクリプト内部のコメントは残します。CGIやプログラムを勉強したい方のためです。コメントをなくしてしまうと、汚いコードゆえに理解できるのはこのプログラム作成能力以上の方でしょうから参考にも何もならないと思ったためです。どうぞ、このテクニカル情報とコメントを参照し、ご自分のプログラムにお役立てください。
Pai-boardの提供するレイアウトが気に入らない方もいらっしゃることでしょう。ここでPai-boardのHTML生成の仕組みをご紹介します。画像のカスタマイズの仕方は、CGIの設定方法をごらんください。
この文書を含む、本来のHTML文書です。エラー詳細[trouble.html]と使用方法[help.html]はご自分のページの一部として用いたいと思われる方もいらっしゃるでしょうから、著作権表示の削除と修正を許可します。どうぞ、ご自分のホームページのデザインと合うように修正してください。
[paiboard.html]と[paidel.html]はそのままのHTML文書です。詳細については、CGI設定をご覧ください。
[paiall.html]と[paitree.html]はCGIによってその都度更新されますので、このファイルをいじっても何の効果も得られません。そのほか、投稿ページでHTMLを吐き出すCGIの仕組みをご紹介します。
CGIがすべてHTML文書を生成しているわけではありません。すべてのHTML文書は、[○○.txt]によって大まかなレイアウトが決定されています。以下、その文書をHTML雛形ファイルと呼びます。雛形ファイルの役割は以下の通りです。
| ファイル名 | 生成されるHTML | |
|---|---|---|
| paitree.txt | ツリー表示(メイン)…このファイルを元にpaitree.htmlが生成 | |
| paiall.txt | メッセージ一括表示(メイン)…このファイルを元にpaiall.htmlが生成 | |
| paidel.txt | メンテナンスCGI…paidel.cgiが参照 | |
| painew.txt | 新規投稿フォーム(投稿ページ) | |
| paires.txt | 返信投稿フォーム(投稿ページ) |
[paidel.txt]以外は、[paires.cgi]によって参照されます。以上のファイルをエディタで開いてみると、HTMLの文法そっくりに書かれていることが分かるでしょう。以下の点が多少違っています。
雛形ファイルに追加したいhtml文書内容を書き加えることによってレイアウトを直すことができるでしょう。あるいはリンクを増やすとか…。
改造したい部分が雛形ファイル内にない場合は、perlスクリプトを改造する必要がありますので、続く「perlスクリプトを改造したい!」をご覧ください。
[::]で始まる記号はCGIにおいて置換が行われる部分です。置換の内容は名前から推察する事ができると思います。例えば、[::body]はCGIによって< body background=...... > (CGIの設定によって置換内容が異なります)に置換されます。perlスクリプト内で置換の箇所を探せば($line =~ s/::body/$body/ig;というような部分です)置換内容が分かるので、置換したくない場合は[::body]を削除して代わりのタグに書き換えてください。[::]の書き換えの応用が有効だろうと思えるところは、返信投稿フォーム内です[paires.txt]。置換によって本文の引用や、タイトル自動入力などをしています。
コメントを参照すればある程度分かると思うので、詳しい説明はしません。スクリプト全体を理解したい方はそちらを参照してください。ここでは、特にhtml生成部分を指摘します。
perlスクリプトは[paires.cgi]と[paidel.cgi]の2種類です。paires.cgiは、投稿フォームHTML生成(2種類)、投稿受け付け&ファイル更新、ツリー表示への解析&更新、とほとんどの機能を有しています。paidel.cgiはメンテナンス用にのみ用いられるCGIで、ツリーデータ[paitree.dat]を元にメンテナンスHTMLの生成、実際の削除、を行います。ここでは、見栄えが大きく変化できる[paires.cgi]のHTML生成機能をメインに説明します。以下、[paires.cgi]の関数とその目的を示します。
write mainのつもりです。新規投稿ページを書き出します。とはいっても、ほとんどは[painew.txt]を用いますが、[c_]で始まるCookieと、リンク、bodyタグなどを置換して生成します。
write resです。返信投稿ページを書き出します。[paires.txt]を参照して書き出しますが、引用などのために多くを置換しています。[paires.txt]と一緒に参照されればどういう仕組みなのかが分かるでしょう。
write paiall.htmlです。[paiall.txt]を元に[paiboard.dat]の内容を整形して[paiall.html]に書き出します。この関数の「#この部分を変えればすぐにコメントの表示形式を変更可能」の部分を変更することでトップの一括表示の表示が一気に変化します。
CGIを稼動してあとで修正した場合、いままのでのコメントとの整合が取れないと思っておられるかもしれませんが、そんなことはありません。この関数は、paiall.htmlをその都度すべてを更新します。メンテナンスCGIのhtmlの更新によっても強制的に更新することが可能ですし、あるいは[paires.cgi?no=-1]でアクセスしても更新可能です。
write paitree.htmlです。[paitree.txt]を元に[paitree.dat]のデータを整形して[paitree.html]に出力します。こちらも同様にpaitree.htmlの見た目を一気に変更することのできる部分です。
著作権表示です。修正禁止ですが、改造した場合は改造者としてその情報を追加してください。
[pre.gif]アイコンを用いています。もし、画像をいっさい使いたくないという場合においては、< img src="$pre_gif" >の部分をPreludeに変更してもかまいません。
Pai-board
(C) 1999 Prelude. All rights reserved.