- ベストアンサー
ページに現在地を表示したいのですが・・
このサイトにも使われていますが、【教えて!goo】の検索窓の2段下の部分に 教えて!goo > コンピューター [技術者向け] > プログラミング > PHP というような現在地表示がされており、リンクが付いています。このような現在地表示をPHPで作ることは可能でしょうか?また、可能でしたらご教授お願いします。 過去の質問と別サイトでも探したのですが、 見つかりませんでした。(見つけ方が悪い?) どうか宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
[1]にせよ、[2]にせよ、別個にデータファイルが必要でしたね。 キチンとフローチャートを描いた上での発言ではないので、ただの直感の話になってしまいますが、データベース的な考え方をすれば、 [1]サイトマップ通りのディレクトリ構成、ファイル構成にして、URLから現在地を推定 のほうが、データが正規化された状態みたいになるし、後々めんどくさくないのかなという気がします。 (サイト構造が変わらず、ファイルだけが増えていくのであれば) 処理は以下の手順が基本になるのではないかと思います。 紙を使ってない、脳内作業によるものですので、アラや間違いだらけかもしれませんが、ヒントになればさいわいです。 文法その他を全く無視した書き方をします。 たとえば、 http://siteurl/category/group/filename.htm というURLを取得し、それを"/"で切り分けます。 そして、切り分けた filename.htm group category という値にアクセスできるようにします。 データファイルのテーブル構造は、 (URLから所得できる値)|表示する日本語 としておきます。 で、URLから取得した値と表示する日本語を、2次元配列に入れます。 今回は $navi[0]=array(filename.htm,"ファイル名"); $navi[1]=array(group,"グループ"); $navi[2]=array(category,"カテゴリ"); とします。 で、この配列を使い、ループ処理で <a href="(サイトのベースURL)">ホーム</a> <a href="1つ目のURLに$navi[2][0]を足す">$navi[2][1]</a> <a href="2つ目のURLに$navi[1][0]を足す">$navi[1][2]</a> <a href="3つ目のURLに$navi[0][0]を足す">$navi[0][2]</a> のように出力すれば、いけるのではないかな、という気がします。 書き終わって気付きましたが、 $navi[0][0]がindex.htmのときの対処に困りますね。 (index.htmは通常複数存在する。値の重複=データ正規化されていない) ファイル名まで表示する必要がないのなら、index.htmがあるディレクトリ名まで表示すればOKですが。 これ以外にも、突っ込みどころ満載だと思います。 私の思いつきを洗練するのも手ですし、新たにフローをお考えになってもよいと思います。
その他の回答 (3)
- lesbrers
- ベストアンサー率48% (23/47)
各ページに <?= breadcrumbs() ?> みたいに関数を入れるだけで(関数名は適当です)、いわゆる「パンくずナビゲータ」を自動生成する、ということでいいのでしょうか。 結論から言えば、可能です。 というか、何通りもやり方があります。 データベースを使わなかったり、ファイルをincludeしまくるような大規模 or 複雑なサイトでなければ、 ・サイトマップ通りのディレクトリ構成、ファイル構成にして、URLから現在地を推定 ・サイトマップとURLの対応を保存するファイルを用意しておき、それを利用する 以上のようにしても可能です。
お礼
お礼が遅くなり大変申し訳ありません。 現在作成しているページは単一ページであり、 フレーム等は使っていません。 その場合、lesbrersさんの教えてくれた >[1]サイトマップ通りのディレクトリ構成、 ファイル構成にして、URLから現在地を推定 >[2]サイトマップとURLの対応を保存するファイルを 用意しておき、それを利用する が使えると思います。作り方としては、以下の方法でよろしいでしょうか? [1]の場合、HTMLで別ページにサイトマップを作成して サイトマップに記載されているURLを元に現在地を 指定する。 [2]の場合、テキストファイルでサイトマップを作成し てそこにPHPがアクセスして解析後、現在のページ 名を表示する。 そしてまた質問なのですが、どちらが長期運用していく上で効率的と考えられますか?運用者が変更になった場合、どちらの方が引き継ぎしやすいかな?と思った所です。 大変申し訳ありませんが、ご教授宜しくお願いします。
- net_lander
- ベストアンサー率49% (40/81)
知りたいことは、こういうことかな? 教えて!goo > コンピューター [技術者向け] > プログラミング > PHP のPHPの部分のリンクが、 http://oshiete1.goo.ne.jp/oshiete.php3?c=256 となっていますが、"?c=256" の部分でしょうか? これは、"oshiete.php3"への引数です。
お礼
お礼が遅れて大変申し訳ありません。 引数について調べていたら返答が遅れてしまいました。 丁寧なご教授有難うございました。 また何かありましたら宜しくお願いいたします
- kusukusu
- ベストアンサー率38% (141/363)
PHPがどうこうって言う問題ですか?(^^; 普通にリンク貼ってるだけじゃないんですか?
お礼
お礼が遅れて大変申し訳ありません。 丁寧なご教授有難うございました。 lesbrersさんの教えていただいた 「URLを/毎に分けて配列化する方法」を 参考にフローを作成してみようと思います。 大変参考になりました。 有難うございました。