since2000.7
Contents
Home
BBS
革命講座
Concepts
Links
Mail
トップへ戻る(homeへはタイトルをクリックしてください)

2002/08/05 (月)

2002/08/05 (月)

メニューの別ファイル化
 WebPageをつくっている方ならわかると思いますが、閲覧者には快適な環境で、思うままにサイト内を移動していただきたいもの。

 このサイトでも、ホームページ(トップページ)以外に検索エンジンなどで来られた方がホームページに行きにくいと考えましたので、Contentsの部分にHomeのリンクをつけてみました。

 しかし、このようにメインのナビゲーション用のリンクを変更すると、すべてのページで同じことをやらなければならなくなって、非常に面倒です。たとえば、僕はこのHomeのリンクをつけるためにトップページ(のテンプレート)、colums.shtml,concepts.shtml,links.shtmlの4つなど(実は他にも日記の格納庫があるのでそちらのテンプレートも本当は変えなければならないが変えてない・・・)を変更しなければならないのです。

 そこで、ナビゲーション用の(Home/BBS/革命講座/Concepts/Links/Mail)の部分だけでも、「外部に一つのファイル」にして集中管理できたらいいのにな、と考えました。そうすれば、変更するときはそのファイルだけ書き換えればいいですよね。で、表示するときはどのページでもそのファイルを読み込むようにすればよいかと。

 もちろん、フレームで区切れば簡単です。しかし、僕のポリシーとして「フレームは使わない」ことに決めているのです。なぜって・・・サイトの管理がしにくくなるし、検索エンジンにも拾われにくくなります。まあ、趣味の問題かもしれませんが。

 では、どうすればいいのか。

 すこしHTMLに詳しい方なら、IFRAMEを使えばいいじゃないの?と言われるでしょう。しかし、このサイトにはNN4.7でアクセスしてくる方が数%いらっしゃるわけで、IFRAMEに対応していない方がいらっしゃる以上、そういうわけにも行きません。それにフレームの一種ともいえますし。

 そこで、CGIを使うのはどうだろうとおもったのです。具体的には、最初にPerlで外部にメニュー表示プログラムを書いて、SSIにより、読み込ませたらどうだろうと考えたのです。
 ところが、うまくいきません。なぜなら、左側のReports...の下の日記のリンクをクリックするとCGIで自動生成したhtml(拡張子は.cgi)が表示されるのですが、この中ではSSIが働きません。CGIの中ではCGIを呼び出すことができないのです。カウンターも表示されないと同様に、リンク部分もなくなってしまうのです。
 問題があるのは、過去の日記の部分だけですが、美しくありません。

 では、PHPではどうだろうか。外部のテキストファイルを読み込ませるようにすれば、楽々ではないだろうか。そう考えたのです。
 しかしながら、それは甘いと言うものです。なぜなら、トップページの拡張子を.shtmlから.phpに変える必要がでてきますから、トップページにふくまれるSSIのカウンタが作動しなくなってしまうのです。SSIが動くにはshtmlの拡張子が必要だからです。
 これもカウンタの動作原理をSSIから変更する必要がでてきてしまい、面倒です(もっとも、できないことはないのですが)。

 ・・・今のところ、Javascriptだけで外部のファイルを読み込んで、それを表示するという方法が良さそうな気がしているのですが、それも実現できるのかよくわかりません。なんだか考えるのが面倒になってきたのです。

 どなたか、よい方法を教えていただけないでしょうか。
 問題は
 1.SSIとPHPを同時に実行できないか。
 2.IFRAMEに変わるHTMLレベルでの別ファイル読み込み方法(Javascriptでもよいです)。
 このどちらかを解決できればいいだけなのです。

 だめかなぁ・・・って、専門の掲示板へでも投稿した方がいいですな。少し探してみます。おすすめなどあれば教えてください。
 というか、普通はそういう問題をどう解決しているのでしょうか?