人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

サイトを構築するときに、メニュー(ナビゲーション)など、ページごとに変更する箇所は、プログラムでまとめられていると思います。

私はPHPで以下のようにしています。

//side_menu.php
function sideMenu($contents=""){
if($contents=="home"){
echo (HOME選択用画像)
}else{
echo (HOME通常用画像)
}
if($contents=="inquiry"){
echo (お問い合わせ選択用画像)
}else{
echo (お問い合わせ通常用画像)
}
}
// 表示箇所
sideMenu("home");


これはこれで問題ないのですが、もう少しわかりやすくできないものかとも思います。

PHPに限らず、「私はこうしています」というご意見をいただければと思います。

●質問者: kt26
●カテゴリ:ウェブ制作
✍キーワード:echo HOME PHP いもの うご
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● studioes
●35ポイント

function view($action){

switch($action){

case 'inquiry':

require('view/inquiry.php');

break;

case 'home':

default:

require('view/home.php');

default:

}

}

view('home');

こんな感じでやってます。 ページ毎に異なる部分を作らずに、ページ毎にページ全体のHTMLをviewとしてベタに作っています。 viewが冗長になる反面、条件判断の回数が減らせて応答が向上したり、特定のページを一気に差し替えたりするのは楽になります。

規模が大きくなる場合は、XMLであるとかでactionとreuireするファイルの対応を外部に持ちます。

◎質問者からの返答

各メニューの内容は別ファイルにするのですね。この方法も良さそうですね。参考にさせていただきます。


2 ● vector
●35ポイント

私はプログラムとデザインの分離をしているので、プログラムが直接HTMLを出力することはありません。


ではどのようにしているかですが、ナビゲーションは共通のテンプレート利用しています。

その中で「選択されているか」のフラグ値を渡し、その部分だけ表示が変わるようになっています。


テンプレートを通常のPHPで書いた場合ということでサンプルを記述致します。

common-navi.html ---------------------------
<ul>
 <?php if ($selectedNav['home']):?>
 <li><img src="HOME選択画像" /></li>
 <?php else:?>
 <li><img src="HOME通常画像" /></li>
 <?php endif;?>
 <?php if ($selectedNav['inquiry']):?>
 <li><img src="お問い合わせ選択画像" /></li>
 <?php else:?>
 <li><img src="お問い合わせ通常画像" /></li>
 <?php endif;?>
</ul>
--------------------------------------------

このテンプレートを利用するときは

<body>
<div id="container">
<div id="nav">
<?php include 'common-nav.html';?>
</div>
</body>

として読み込みます。

◎質問者からの返答

$selectedNavは、テンプレートを読み込む前に指定するのですよね?

私は関数でまとめることが多いのですが、確かにこの方法ですと、デザインはわかりやすいですね。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ