PHPでメニュー一元化
コンテンツの追加。
あぁメニューを、関係するページに全部追加しなくては、、、。
コンテンツが増えれば増えるほど、悩まされる悪夢です。
パンくずをつけて、インデックスページに戻れるような構造にしてもよいのですが、
ナビゲーションなどを、よく勉強してらっしゃる方は、メニューを羅列して行き来しやすいホームページにしたいと思うはずです。
そこでもう、いまや当たり前のPHPをつかってメニューを一元化しましょう。
メニューの部分だけひとつのファイルにしてしまうのです。
まず、メニューのところだけを切り抜いて
[ menu.php ] こんなPHPファイルを作ります。
<ul>
<li><a href="/gpx/pre-ps/pre-photoshop.php">Photoshopを始める前に</a></li>
<li><a href="/gpx/index.php">Photoshop Tips</a></li>
<li><a href="/gpx/software.php">画像処理ソフト</a></li>
<li><a href="/gpx/font.php">フォントの入手方法</a></li>
<li><a href="/gpx/color/saido.php">配色のコツ</a></li>
</ul>
<HTML>とか<BODY>とかはいりません。
ul、liはHTMLのリストタグですが、<br>改行でも全然かまいません。
それを実際のページのとこに差し込みます。
-----------------------------------------------------------
(〜中略〜)
<div class="right">
<div class="menu_title_gpx"></div>
<div class="menu_bg">
<? include("/web/menu.php"); ?>
</div>
<div class="menu_bottom"></div>
(〜中略〜)
-----------------------------------------------------------
こんな風に、メニューのテキストが流し込める位置に
<? include("/web/menu.php"); ?>
これで、さきほど作ったmenu.phpが、この位置にページが開かれた際、流れ込んできます。
サーバによってはincludeパスがなんらかのライブラリに設定されている場合は、サーバの絶対パスが必要な場合があります。
わたしが使っているLOLIPOP!
のレンタルサーバだとこうなっていました。
/home/sites/lolipop.jp/users/FTPのユーザーID/web/menu.php
PHPはエラーが詳しく出るので、それを参考にするのが良いですね。
test.phpと称して、
<html>
<head>
<title></title>
</head>
<body>
<? include("/web/menu.php"); ?>
</body>
</html>
FTPサーバーにアップロードしてみます。
Warning: main(): Failed opening '/web/menu.php' for inclusion (include_path='.:/usr/local/lib/php:/usr/local/lib/php/Smarty') in /home/sites/lolipop.jp/users/FTPのユーザーID/web/test.php on line 11
エラーが出ます。
はい、コレです!
/home/sites/lolipop.jp/users/FTPのユーザーID/web/test.php
(ユーザーIDは伏せさせていただいてます。 )
サーバから見た、test.phpの位置がわかります。
/home/sites/lolipop.jp/users/FTPのユーザーID/web/ = http://www.allef.com/
http://www.allef.com/******/
ここのサーバーでいうと、******の階層です。
そうすると差し込むパスも決まってきます。
<? include("/home/sites/lolipop.jp/users/FTPのユーザーID/web/menu.php"); ?>
これはサーバの絶対パスなので、どの階層のフォルダにいるページでも、直のmenu.phpファイルを読み出してくるので、
かなり便利です。
<? ?>はPHPの記述タグです。
これで関連するページにこの
<? include("/home/sites/lolipop.jp/users/FTPのユーザーID/web/menu.php"); ?>
をいれておけば
menu.php
を編集するだけで、例えば100ページにも及ぶ場合なんかは、全部切り替わります。
コンテンツが何ページも増えても、メニューの追加は1行追加するだけです。
便利なので、このホームページでも多々使っています。
うちのホームページ領域、PHPってのに対応してないんだけど・・・。
という場合、<iframe>でも代用することができます。
<iframe src="/web/menu.htm" name="menu" width="160" height="300">
このように、メニューのところだけを、別ファイルにしておけば、1つのファイルを変更するだけで、関連ページのメニューが全部変わるってなこともできます。
この場合は、フレームなので、menu.htmからのリンクは <a href="*********" target="_top">
target="_top"が必要になります。
コレを入れないと、フレームの内部だけかわって、ちょっとかっこ悪いことになります。
ただ、iframeは、フレームなので、メニュー内容が検索エンジンに読まれないという、不利な点もありますが、
編集のしやすさは、PHPの差込と変わりありません。
あとはSSIが対応しているサーバであれば、差し込むことができますね。
あとは、Smartyのようなテンプレートエンジンを使うという手もありますが、どうもページの管理がしづらいイメージがあったので、自分なりのこの方法を使っています。



