ホーム グラフィックス、HP素材の作り方 無料素材、HP素材 ウェブデザインのスキル ホームページ作成者のためのリンク集
WEB TIPS > PHPでメニュー一元化

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(/web/menu.php): failed to open stream: No such file or directory in /home/sites/lolipop.jp/users/FTPのユーザーID/web/test.php on line 11

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のようなテンプレートエンジンを使うという手もありますが、どうもページの管理がしづらいイメージがあったので、自分なりのこの方法を使っています。

 

ページの先頭に戻ります