• ベストアンサー

PHPで作るフレーム、どんな風に作ってます?

 PHPやASPなどのサーバーサイドスクリプトで、全てのページにメニューなどを表示させて、フレームみたいなものを作るのがよくありますが、あれってどのように作ってますか?  僕はそれぞれのファイルに <?php function display_html(){ print <<<HJK ページの本文 HJK; } ?>  として、フレームファイルindex.phpでdisplay_html()を呼び出してフレームを作成しているのですが、一般的にはどうなのかな、と思いまして。

noname#82539
noname#82539
  • PHP
  • 回答数4
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

私も #1 さんの方法を使う事が多いですね。 逆の方法もありますね。 ベースの物をindex.phpに作っておいて、 --------index.php---------- <html> <head>........... <body> ...........以上、共通部分 <?php if ( ereg("^[0-9]+$", $_GET["p"] ){ include ($_GET["p"].".inc.php"); } ?> ....以下共通部分 </body> </html> ------------------------------ みたいにしてindex.php?p=123 で123.inc.phpを呼び出したりする方法とか。 最近ではSmartyのようなテンプレートエンジンを使っている事も多いと思います。 http://gigazine.net/index.php?/news/comments/20060803_php_template_engine/ 参考まで。

noname#82539
質問者

お礼

 ご回答ありがとうございます。  そういえば、Smartyもありましたね。・・・ってこんなにテンプレートエンジンは種類があるんですか。すごいですね・・・。

その他の回答 (3)

回答No.4

私はSmartyで共通テンプレートを作成しておいて、個別テンプレートから 共通テンプレートをインクルードしてます。 因みにワークフレームではなく、フレームワーク。 骨格になり、独自処理を埋め込むだけで、決まった動作の下に自動的に処理を呼び出してくれます。 私はEthnaとZendFrameworkをいじってます。 もしかしたらついでにMVCモデルについても勉強された方が良いかもしれませんね。

noname#82539
質問者

お礼

 ご回答ありがとうございます。  MVCモデルというのもあるのですか。PHPは他の言語に比べると勉強することは少ないと思っていましたが、深くやろうとするとひたすら深いですね・・・。

回答No.3

私の場合は、サンプルは無いですが、ワークフレームの機能で、フィルターで実現します。 mojavi とか、mapleとか、ethna とか。 あとは、テンプレートエンジンに渡して表示というところです。

noname#82539
質問者

お礼

 ご回答ありがとうございます。  ワークフレームというものもあるのですか。検索してみたら、なかなか面白そうなので、いずれ勉強してみたいと思います。

回答No.1

一般的と言われますと困りますが私の場合は以下のような感じです。 <html> <head> <title>ページタイトル</title> </head> <body> <?php include("menu.php"); ?> <!-- ページ本文 --> </body> </html> menu.php には共通のメニュー部分だけ記述してあり include 関数により呼び出された位置で表示されます。ページごとに違いを持たせたい場合は呼び出しの前に変数を定義しておけばその変数を menu.php 内部で使用できます。 この方法だと各ページの記述が少なくてすむので重宝してます。

参考URL:
http://jp.php.net/manual/ja/function.include.php
noname#82539
質問者

お礼

 ご回答ありがとうございます。  各ファイルでメニューを呼び出す手法ですね。確かに僕の手法だと、フレームファイルのプログラム記述量が多くて大変でした。

関連するQ&A

  • フレーム内ページかの判別方法

    こんにちは。 ホームページを作成、公開しております。 フレーム構造を使っており左側にメニュー(menu.html)、右側に内容(main.html)があるものとなっています。 (フレームページは、index.html) このページを検索エンジンに登録したのですが、フレーム内のページ(例えばmain.html)が検索に引っかかることもあり、メニューが表示されないので効率的にブラウズできません。 そこで、そのような表示がされた場合に自動的にフレームページ(index.html)へジャンプするようにしたいのですが、なにか方法はあるのでしょうか? ちなみにサーバーでは、各種スクリプト,CGI,SSI,ASP,PHPが利用可能です。

    • ベストアンサー
    • HTML
  • フレームで

    フレームで <FRAMESET COLS="40%,*"> <FRAME NAME="Menu" SRC="index.html" TITLE="Menu"> <FRAME NAME="Content" SRC="???.html" TITLE="Content"> </FRAMESET> で、URLの部分で、二つ定義するのですが、この場合、縦に二つindex.html,???.htmlと、表示されますが、 ここで、メインのindex.htmlに、この両者(index.html,???html)を表示させたいのですが、 つまり、現在ある(index.html)にフレーム付けで、 ???.htmlを付け加えて、index.html.???.htmlと表示させたいのですが・・・ indexファイルに、index・???をフレームすると、indexが 現ページなので、???のみの表示になります。 わかりにくいかもしれません^^ ファイル名を変えるしかないでしょうか?

    • ベストアンサー
    • HTML
  • 拡張子がhtmlでもphpスクリプト実行したい

    webサーバがApacheの、レンタルサーバーでホームページを作っております。フレームの代わりにphpのincludeを使ってメニュー等を表示しています。しかし最終的に表示されるページの拡張子がphpでないと、きちんと表示されません。拡張子がhtmlでもphpスクリプトが実行されるようにしたくて、色々調べていたのですが、それらしき方法を発見しました。 Apacheで言えばhttpd.confの AddType application/x-httpd-php .php というところを例えば AddType application/x-httpd-php .php .html にするだけで、*.phpでも*.htmlなファイルであってもそこに埋め込まれているPHPスクリプトは実行されるようになる。 …とあったのですが、何をどう加えるか、もしくは変えればいいのかサッパリです。 もっとこっちの方が簡単だ、など、詳しい方いらっしゃいましたら、どうか宜しくお願い致します。

    • ベストアンサー
    • PHP
  • フレームをやめたいのですが・・・・

    現在自分のHPをフレームを使って作成しておりますが、事情によりフレームをやめたいと思います。 が、フレームをやめるとメニューを全ページにおいてメニューの変更があるときには全ページを変更しなければなりません。さすがに今後の事を考えるとそれは無理だと思っています。 Javascript、PHPなどを使って、メニューファイルのに別に用意して、メニューファイルを変更すれば、すべてのページが反映されるような方法があると聞いたのですが、具体的にどのような方法があるのでしょうか? その辺りの方法について詳しい方か、またはその事について書かれてあるHPを教えて頂ければ大変助かります。 どうぞ宜しくお願いします。

    • ベストアンサー
    • HTML
  • 1度に複数フレームの表示が戻らない

    フレームを上(name=index、メニューボタンを表示)に1つ、下の左側(name=sub_menu、サブメニューを表示)と、右側(name=honbun、本文を表示)に分けています。メニューボタンAを押すと、Aサブメニュー、A本文をリンク表示し、メニューボタンBを押すと、Bサブメニュー、B本文を表示するようにしました。が、そこからIEツールバーの「戻る」を押すとAサブメニューに戻ってB本文は残ったまま、もう1度「戻る」を押すとA本文も戻ってくれます。どうしたら1度にAサブメニュー、A本文に戻るのでしょうか?簡単な方法はありますか? <SCRIPT LANGUAGE="JavaScript"> function change_01(){ parent.honbun.location="honbun/A.html"; } function change_02(){ parent.honbun.location="honbun/B.html"; } ・ ・ </SCRIPT> <a href="sub_menu/sub_menu_A.html" target="sub_menu" onClick="change_01()"></a> <a href="sub_menu/sub_menu_B.html" target="sub_menu" onClick="change_02()"></a> ・ ・

    • 締切済み
    • CSS
  • 別フレームの制御について

    はじめて質問させていただきます。HTMLで上下2分割のフレームがあり、上部フレームのファイルにはバナーがはってあるとします。 それで下部フレームのファイルからハイパーテキスト等をクリックしてリンク→同じ下部フレームに新しいファイルを読み込む際に、同時に上部フレームのバナーをローテーションさせたいのです。 上部フレームのファイルはASPファイル(NTサーバーなもので)で作り、5種類のバナーを下部フレームのページがリンクされる毎にランダムにローテーションさせたいのですが何かいい方法はありませんでしょうか。JAVA Scriptでもできるかなと思ったのですが、なかなかサンプルが見つかりません。 イメージとしては下部フレーム内のファイルをリンクすると、上部フレームをリフレッシュするメタタグか何かがあって、上部フレームのASPファイルは、リフレッシュされる度にランダムにバナーを読み込む、ということなのかな、とも思うのですが。 すいませんが、よろしくお願いいたします。

  • フレームの代わりにPHPを使う

    こんにちは。 あるサイトを運営している者なのですが、サイト内のメニュー (例えばhttp://headlines.yahoo.co.jp/hlにあるような 「ニュース」「トピックス」「写真」などのメニュー) を作る方法としては、フレームなどがありますよね? ですが、SEO対策によくないと聞き、今はフレームを使わず、 1ページずつに、コピペでメニュー部分を追加していきました。 ですが、メニューを少し変更したいとき、前ページに手を加えないといけません。 そこで、http://neta.ywcafe.net/000372.htmlを見つけ PHPを使うという方法を知りました。 ですが、この方法だと「どのページでもまったく同じメニュー」しか 表示できませんよね? http://headlines.yahoo.co.jp/hlなどでは、 「現在表示しているコンテンツ」(http://headlines.yahoo.co.jp/hlではニュース) だけ、明るい色で表示されていて、 自分が今どの項目を見ているか、分かりやすくなっています。 http://headlines.yahoo.co.jp/hlのように、 「今見ているコンテンツ」のメニュー項目だけ、画像を変える、などといったことは PHPでできないのでしょうか? http://blog.livedoor.jp/kalibora/archives/6622031.html に、少し書いてあったのですが、これは「現在表示している部分を太字で表示し、分かりやすくする」 というものです。 私がやりたいのは「現在表示している部分だけ、画像を変えて分かりやすくする」 ということなんですが、私はPHPの知識が無いため、よくわかりません。 こういったことは、PHPで可能でしょうか。 もし文章が分かりにくかったらすいません。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 左右に分かれているフレーム間での値の受け渡し

    こんにちは、はじめまして。 左右に分かれているフレーム(右にあるフレームを押下すると、左側のフォーム内の処理が走り、その結果(フラグなど)をサーバに送りたいです。 ソースは以下のようになっています。Javascriptで値の受け渡しをしたいのですが、どのようにすればsubmitができるかわかりません。どなたがご存知の方、よろしくお願いします。 ↓以下ソース↓ ~右側~ <form action="menu.php" method="post" name="form_menu"> <input type="button" value="test" onClick="push();">      省略 </form> <script language="javascript"> function push() {  --ここが分かりません-- ここで左側のフォームに送るフラグ値をセットして  それを左側のフォームにsubmitしたいです。 } </script> ~左側~ <form action="input.php" method="post" name="form_input">      省略 </form> ~フレーム~ <FRAMESET cols="80%,20%" frameborder="0"> <FRAME SRC="input.php" name="frame_input"> <FRAME SRC="menu.php" name="frame_menu"> </FRAMESET>

    • ベストアンサー
    • PHP
  • FlashからPHPへの変数の渡し方について

    初めまして。beterugiusと申します。 ご質問したいのですが、 まず、上下2フレームのindex.phpファイルがあります。 FLASHファイル(top_image.fla)は、シングルフレームのjpegイメージ(三枚の画像をPhotoShopで合成して、一枚のイメージにしてある。)です。 その.flaファイルを書き出した、.swfコンテンツ上をマウスが移動 すると、コンテンツ上のどの部分にマウスがあるかで、下フレームのTHMLが切り替わるようにしたいので、top_image.swf から、index.phpに対して、GETメソッドでページ番号の変数自身を 渡したいのですが、実際にFLASHコンテンツ上をマウスで動かしてみると、ブラウザのアドレス欄に、GETメソッドのクエリー文字列の「?」 だけは追加されているのですが、肝心の変数が渡されておらず、 下フレームのHTMLも切り替わりません。 どうすればちゅんと動くのか、どなたかご回答いただけないでしょうか? -------------------------------------------------------------- 「top_image.fla」 var sendObj:LoadVars = new LoadVars(); var page:Number; function onMouseMove(){ var x:Number = top_image._x; // グラフィックの中心座標 var y:Number = top_image._y; if( 0 <= y && y <= 316 ){ if( 0 <= x && x <= 255 ){ page = 1; sendObj.send("../php/index.php", "page", "GET"); } else if( 256 <= x && x <= 512 ){ page = 2; sendObj.send("../php/index.php", "page", "GET"); } else if(513 <= x && x <= 766 ){ page = 3; sendObj.send("../php/index.php", "page", "GET"); } } } -------------------------------------------------------------- 「index.php」 <html> <head><title>ActionScript2.0</title> <meta http-equiv="content-type" content="application/x-www-form-urlencoded"> </head> <frameset rows="350,*"> <frame name="top" src="../html/top.html"> <?php // Action ScriptからのPOSTデータの取得 $page = $_GET['page']; switch($page){ case 1: print("<frame name='bottom' src='../html/bottom1.html'>"); break; case 2: print("<frame name='bottom' src='../html/bottom2.html'>"); break; case 3: print("<frame name='bottom' src='../html/bottom3.html'>"); break; } if(is_null($page)){ // $page変数の中身がNULL(未定義)の場合 print("<frame name='bottom' src='../html/blank.html'>"); } ?> </frameset> </html> -------------------------------------------------------------

    • ベストアンサー
    • Flash
  • フレームについて

    こんにちは、初めて質問させていただきます。 フレームでホームページをつくり、いろいろな 検索サイト(goo・google等)にリンクを させていただいたのですが、キーワードで 検索をしたときに、フレームの中のページが ひっかかって出てきてしまいます。 (フレームのページ→index.htmlなのですが、  menu.htmがひっかかる) 見たときに、index.htmlを表示させるように するには、どうしたらよいのでしょうか?

    • ベストアンサー
    • CSS

専門家に質問してみよう