パンくずをphpで作っています。


画面構成は左サイドにメニューがあって、
それをクリックすると右側に選択したコンテンツが表示されるというものです。

といっても、とりあえず『トップ>現在いるメニュー』の2階層にするつもりです。

この「現在いるメニュー」の表示名を、メニューの表示名と同一にしたいのですが、どのようにしたらよいでしょうか?
(クリック時に取得すればいいと思うのですが、どのように取得すればよいのかが分かりません)

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/06/10 16:54:09
  • 終了:2011/06/17 16:55:02

回答(2件)

id:tdoi No.1

tdoi回答回数174ベストアンサー獲得回数752011/06/10 17:20:51

そもそもどんなスクリプト書いているのか分からないので、答えようがないですが、クリック時に取得する必要性はなにかありますか?

メニューを集中管理する仕組みを持ち、それを元に、メニューの表示もパンくずリストも作成すればいいのでは?

id:indgoma

すみません、ご返信遅くなりました。

本当はおっしゃる通り、メニューを一元管理するような仕組みがあれば一番いいなぁと思うのですが、すごい素人で、正直どのようにしたらいいのか分かりません。

ちなみにtdoiさんだったら、どのようなメニューを集中管理する仕組みを作られるでしょうか?具体的に教えていただけたら幸いです。(かなりヒントになると思うので)

2011/06/11 18:39:21
id:yoneto164 No.2

ヨネちゃん回答回数813ベストアンサー獲得回数942011/06/11 19:21:14

パンくずをいちいち作るのも確かに面倒ですよね。

例としてですが、

サイトのディレクトリ(URL)構造から引っ張ってくる方法があります。

URLは $_SERVER["SERVER_NAME"] で分かりますので、

正規表現やマッチで現在のディレクトリを把握して表示します。


たとえば以下のような構造になっていたとすれば、

index.html(A)

├明るい話(B)

││

│├その1(C)

││

│└その2(C)

├暗い話(B)

││

│├その3(C)

││

│└その4(C)

└サイトマップ(B)

(A)と(B)には「→」マークを何回表示するかという処理が必要です。

(C)についてサイトの管理者が自分自身である場合、

ページのタイトルやカテゴリ(メニュー)自体を変数に代入しておき、

<title></title>の間にPHPで挿入する方法があります。

  • id:tdoi
    メニューの一元管理の実装方法もどのような構造で実現するかに依存します。
    例えばですが、

    ・なんらかのフレームワークを用いるのかどうか
    ・画面ごとにアクセスされるスクリプトを用意するのか、それとも、集中管理するコントローラを用意するのか
    ・画面の出力はテンプレートエンジンなどを利用するのか、スクリプト内で解決するのか
    ・画面ごとにスクリプトを用意するのであれば、メニューの階層とスクリプトの物理的な階層が同じかどうか

    といったことです。


    一元管理という意味だけでは、例えば、

    $MENU = array('top' => array('name' => 'トップ', 'item' => '/index.php'),
    'category1' => array('name' => 'カテゴリ1',
    'item' => array('item1' => array('name' => 'アイテム1', 'item' => '/category1/item1.php'),
    'item2' => array('name' => 'アイテム2', 'item' => '/category1/item2.php'))),
    'category2' => array('name' => 'カテゴリ2',
    'item' => array('item3' => array('name' => 'アイテム3', 'item' => '/category2/item3.php'),
    'item4' => array('name' => 'アイテム4', 'item' => '/category2/item4.php'))));


    のような連想配列を一元管理しておけば、これを元に左サイドのメニューは構築できるでしょうし、特定の画面がどのキーに対応するのかということだけを認識すれば、パンくずリストも構成できるでしょう。

    この例では画面ごとにスクリプトがあると過程してますので、各スクリプトの先頭で定義でもすれば十分でしょう。これが面倒であれば、ヨネちゃんさんがおっしゃっているように、可能ならURLからキーが判別可能な仕組みを用意しておけばよいでしょう。


この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません