メニューを共有する
全ページでメニュー共有
ホームページのメニューは、新しいコンテンツを増やすたびに変更しますね。 全部のページにメニューを入れていると、更新に手間がかかりますね。 ここでは、メニューを別のファイルとして作り、各ページで読込むことで、メニューの共有をします。 メニューの更新が1つのファイルだけで済むので、更新が楽になりますよ。
メニューとは
メニューとは、サイト内のコンテンツの一覧のことで、リスト形式の他、プルダウンメニューなどがあります。 なお、メニューを作るスクリプトは、メニュー作成をごらんください。
ファイルの挿入の仕方
ファイル挿入の仕方は、以下の方法があります。
- SSIを用いる
- PHPを用いる
他にもやり方はありますが、主なものはこの2つでしょう。 Javascriptを用いるやり方もありますが、ユーザー側の環境に左右されるので、メニューでは利用しないほうがよいでしょう。
SSIを用いたファイル挿入
SSIを用いてファイル挿入するには、以下のように記述します。 記述した場所に、menu.html の内容が表示されます。 (menu.html はご自分の環境でのファイル名に変更してください。)
<!--#include file="menu.html" -->
ブラウザで読込むと、全体で1つの HTML ファイルとして解釈されるので、メニューファイルには、<html><head>などのタグは不要です。
※レンタルサーバによっては、SSI の利用ができない場合があります。 また、読込む側のファイル名(上記の命令を記述するファイル)の拡張子が.shtml でないと SSI が利用できない場合があります。 サーバにより異なるので、利用しているサーバの管理者にお問い合わせください。
PHP を利用したファイル挿入
PHPを用いてファイル挿入するには、require関数またはinclude関数を用いて、以下のように記述します。 記述した場所に、menu.html の内容が表示されます。 (menu.html はご自分の環境でのファイル名に変更してください。)
<?php require("menu.html");?>
<?php include("menu.html");?>
上記のいずれか一方でOKです。require関数は読み込むファイルが存在しない場合にエラーになります(スクリプト実行が中断)が、include関数は、読み込むファイルが存在しない場合、それ以降の処理も行われます。
ブラウザで読込むと、全体で1つの HTML ファイルとして解釈されるので、メニューファイルには、<html><head>などのタグは不要です。 なお、読込む側のファイル(上記の命令を記述するファイル)は、拡張子を.phpにしておいてください。
なお読み込むファイルmenu.htmlをテキストとして読み込む場合(PHPスクリプト扱いをしない場合)は、readfile関数を利用するほうが安全&高速です。
<?php readfile("menu.html");?>
※レンタルサーバによっては、PHP の利用ができない場合があります。 PHP が利用できるかどうかは、利用しているサーバの管理者にお問い合わせください。
レンタルサーバについては、レンタルサーバの選び方をご覧下さい。