【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード

ヘッダ、サイドバー、コンテンツ、フッタというレイアウトで
100ページぐらいあるWebサイトを構築する場合、
ヘッダやフッタに変化がないのであれば、共通化したくなります。
(変更があった時に、1箇所変更すればいい、という風にしたいため)

そこで、例えば、PHPが使えるところであれば、includeすればいいのですが、
使えない場合、JavaScriptを使えば可能ではあると思います。
しかし、JavaScriptはOffにされた時のことを考えると
このやり方はリスクがあるような気がします。

そこで、知りたいのですが、htmlを共通化したい場合、
PHPなどを使う以外に、どんなやり方があるのでしょうか?
できれば、サーバサイドに仕込む方法ではないやり方でお願いします。

A 回答 (4件)

デザインを指定したCSSをファイルとして置いておき


それを指定する方法では不足でしょうか?

<head>タグ範囲内に以下のように指定すれば良いです。
<link href="./スタイルシート名.css" rel="stylesheet" type="text/css">
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
例えば、メニュー項目が増えたときに<LI>をひとつ追加する、というようなことを想定していますので、
CSSでは無理ではないか、と考えています。

お礼日時:2009/02/18 23:31

SSI等は使用可能な環境ですか?


SSIなら簡単にファイルを読み込むこともできます。

また、CSSでもクラスを使って普通の<li>タグなどと区別することも可能です。
<style type="text/css">
<!--
.red { color: red; }
-->
<p class=red>クラス</p>
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
SSIの使用が可能かどうかについては確認してみます。
htmlのincludeでは、やはりSSI、ということになるんですね。
しかし、将来的に管理する人があまりプログラミングに強い人ではないので、
できれば、クライアント側ですべて出来るとよい、と思っていました。

お礼日時:2009/02/19 00:08

 そのような場合は、CGIかPHPとか、大規模になればASPサーバー(XMLを含む)を使うとかになるでしょう。


 データを置いておいて、それをHTTP要求を受けたとき、動的にページを作成して表示する手法です。
 たとえば、http:/ /hoge.com/とアクセスがあれば、別途用意した目次用のデータをテンプレートに埋め込んで返す。http:/ /hoge.com/books/abc.htmlの要求なら、PATH_INFO[books/abc.html]から、書籍データの中から、abcに該当するデータを取り出してきて、HTMLに整形して返せばよい。
 また、XMLとしてデータを保存しておいて、サーバー側のXMLパーサを使ってXSLからHTMLに変換するとか・・

 手軽なのは、CGIやPHP、将来的にはXMLでというところかな・・・。XMLだと、データの再利用がずっと楽になるし、・・・
 現在の新しいブラウザは、XMLをそのまま利用できるものも多いですから、将来的にはXML/XSLを学んだほうがよいかと・
    • good
    • 0
この回答へのお礼

100ページ程度なので、そんなに大規模、というほどではありません。
また、善意で借りているサーバらしく、あまりあれこれ要求できないようなので困っています。
XML/XSLという発想はありませんでした。
ありがとうございます。調べてみます。

お礼日時:2009/02/19 00:13

ヘッダやフッタに変化があったときはテキストエディタの一括置換などを使用して対象ファイル全部一度に置換すればよいです。


難しい技術も何もいらず、最も確実です。
    • good
    • 0
この回答へのお礼

これは、最終手段だと思ってますが、現実的にはアリなのかもしれません。
ちょっとしたことですが、<LI>を追加するとき、改行を入れたくなるので
正規表現を使って一括置換すればいいのですが、とすると一気にハードルがあがってしまいます。
また、一括置換は一歩間違えば、置換してほしくないところまでやってしまうので、
普通の人にやってもらうのはリスキー、というのもあります。
担当者にメリットとデメリットを話して、本人に決めてもらうことにします。
皆様、ありがとうございました。

お礼日時:2009/02/19 12:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!