phpな休日 BBS sitemap
1. フレームセット

WEBページのひとつの形態として FRAMESET があります。

<frameset rows="24,*,36">
<frame href="header.html" scrolling="no" noresize>
<frameset cols="120,*">
<frame href="menu.html">
<frame href="main.html" name="main">
</frameset>
<frame href="footer.html" scrolling="no" noresize>

上記のような frameset.html で下の図のような表示になります。

フレームセットイメージ

ひとつのページを表示するのに、frameset.html (フレームセットのページ)・header.html・menu.html・main.html・footer.html と5つのhemlファイルが必要になりますが、特にメニュー部分など menu.html を更新するだけで複数ページのメニュー部分がすべて更新される利便性があり非常に便利です。
下に実行例を示します。

サブウインドウで表示

便利な反面、パーツであるはずの main3.html

サブウインドウで表示

などが単体で検索されてしまう、単体で表示されると行き場がなくなる、など問題も多々あって、作成しやすいわりに敬遠される傾向にあります。

2. include

当サイトの構成は PHP の include 関数を使用して、フレームセットと同じような機能を実現しています。大ざっぱですが下記のようなソースになります。

<?php
mb_language("ja");
mb_internal_encoding("UTF-8");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>phpな休日</title>
</head>
<body>
<?php
include "./header.cgi";
include "./menu.cgi";
include "./main.cgi";
include "./footer.cgi";
?>
</body>
</html>

イメージは下図のようになります。

フレームセットイメージ

include で呼び出しているファイルの拡張子は .cgi にしてありますので、単体でブラウザで表示されてしまうこともありません。
呼び出される側のファイルは単純に内容を読んでソースとして挿入されるので、内容が純粋な HTML であろうと PHP コマンドを含んでいようと問題ありません。
拡張子も .txt でも .doc でもサーバーにアップ出来るものであればよいですが、 .cgi にしておくのが良いでしょう。


Fatal error: Uncaught Error: Undefined constant "Y.n.j" in /home/users/2/secret.jp-final/web/phpholiday/15/index.cgi:74 Stack trace: #0 /home/users/2/secret.jp-final/web/phpholiday/index.php(334): include() #1 {main} thrown in /home/users/2/secret.jp-final/web/phpholiday/15/index.cgi on line 74