• ベストアンサー

フレームなしでフレームのような事できますか?

こんばんは。 私はHTMLに関しては、簡単なホームページを作る事ができる程度です。お手柔らかにお願いします(^^)。 私は自分のホームページを持っているのですが、大体のデザイン(外枠)をHTML等に詳しい友人に作ってもらって、その中だけをいろいろいじくっています。 ホームページの内容はコンテンツの部分と、メニューの部分が分かれています。よくあるフレームで分かれているような感じなのですが、実際はフレームを利用しておらず、すべてのページに同じHTMLデータが打ち込まれています。しかし、これでは「メニュー」部分に変更があればすべてのページを変更させなくてはならず非常に面倒です。 そこで、フレームのように、別のところで「メニュー」の内容をいじくれば、すべてのページに変更が反映されるような方法はありますか?フレームは使いたくありません。宜しくお願いします。 (「できない」なら「できない」とズバッとお願いします!)

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

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

できることはできます。 簡単な方法ならメニュー部分をJavaScriptで書き出すようにすればスクリプトファイルを修正するだけで全部のhtmlファイルに反映されます。 たとえば Menu='<a href="menu1.html">menu1</a>\n' +'<br>\n' +'<a href="menu2.html">menu2</a>\n' document.write(Menu); と書いたスクリプトファイルをmenu.jsとでもして保存し、htmlのメニューの部分に <script language="JavaScript" src="menu.js"></script> と書けばスクリプトファイルのhtmlがブラウザで表示されます。 なのでスクリプトファイルだけを修正すれば何十ファイルあろうがすべてのファイルに反映されます。 ちょっと難しかったですかね^^; もっと簡単にはDreamweaverなどのソフトを使えば一括に置換してくれる機能があるのでそれで修正したほうが簡単かも。

その他の回答 (3)

  • bayb
  • ベストアンサー率22% (4/18)
回答No.4

私のやっている簡単な方法は、 画像に項目を配置して項目からリンクしたメニュー( クリッカブルマップ)を一つ作っておいて、これを各ページにコピペします。表示の位置はテーブル中にいれて決めます。 変更したときは、一つだけ修正してコピペで入れ替えします。 10ページ位なら全然手間ではありません。

回答No.3

私もメニューは面倒臭く感じていました。 そこでこんなものを作りました ご参考になればと思います。 使いまわしが出来るように---部で4つあり、2つ目を変更するだけで 使えるようになっています。 ただ、所詮JavaScriptですからクローラはリンクをたどりませんし、noscriptに代替リンクを貼ると結局同じなんですけどね。 -------------------------------------- NowURL = unescape(window.location); -------------------------------------- SiteTitle = "サイトタイトル"; ContentsName = new Array(3); ContentsName[1] = "Contents1"; ContentsName[2] = "Contents2"; ContentsName[3] = "Contents3"; FileNameList = new Array(); FileNameList[1] = new Array("/Contents1/page1","/Contents1/page2","/Contents1/page3","/Contents1/page4","/Contents1/page5"); FileNameList[2] = new Array("/Contents2/page1","/Contents2/page2","/Contents2/page3","/Contents2/page4","/Contents2/page5"); FileNameList[3] = new Array("/Contents3/page1","/Contents3/page2","/Contents3/page3","/Contents3/page4","/Contents3/page5"); PageTitleList = new Array(); PageTitleList[1] = new Array("Page1Title","Page2Title","Page3Title","Page4Title","Page5Title"); PageTitleList[2] = new Array("Page1Title","Page2Title","Page3Title","Page4Title","Page5Title"); PageTitleList[3] = new Array("Page1Title","Page2Title","Page3Title","Page4Title","Page5Title"); ------------------------------------------------ StartAnchorTag = '■<a href="./index.html">'; EndAnchorTag = '<\/a><br>'; if(NowURL.indexOf("abc.com/index") >= 0){ StartAnchorTag ='■'; EndAnchorTag = '<br>'; } document.open(); document.write('●' + '<b>' + SiteTitle + "メニュー" + '<\/b><br>'); document.write(StartAnchorTag); document.write("トップページ"); document.write(EndAnchorTag); for(j = 1;j < ContentsName.length;j++){ document.write('□<a href="JavaScript:ok(' + j + ');">'); document.write(ContentsName[j]); document.write('<\/a><br>'); document.write('<ul id="tree' + j + '"class="menu" style="display:none;">'); for(i = 0;i < FileNameList[j].length;i++){ StartAnchorTag = '<a href=".' + FileNameList[j][i] + '.html">'; EndAnchorTag = '<\/a>'; if(NowURL.indexOf(FileNameList[j][i]) >= 0){ StartAnchorTag ='<b>'; EndAnchorTag = '<\/b>'; } document.write('<li>'); document.write(StartAnchorTag); document.write(PageTitleList[j][i]); document.write(EndAnchorTag); document.write('<\/li>'); } document.write('<\/ul>'); } document.close(); ---------------------------------------------- function ok(n){ id="tree"+n; if(navigator.appName == "Netscape"){ if(document.getElementById(id).style.display == "none"){ document.getElementById(id).style.display="block"; }else{ document.getElementById(id).style.display="none"; } } else if((navigator.appName.indexOf("Microsoft")>=0)||(navigator.appVersion.charAt(0)>=4)){ if(document.all(id).style.display == "none"){ document.all(id).style.display="block"; }else{ document.all(id).style.display="none"; } } } ------------------- IE6なら動くと思いますよ。 内容については勝手に解釈してくださいね。

tincanada
質問者

お礼

ありがとうございます。 私はそこまでプログラム等に詳しくないので、詳しい友人に聞いて、教えてもらいます。わざわざありがとうございました。

  • n_kaname
  • ベストアンサー率22% (694/3099)
回答No.1

SSIのincludeコマンドという物を使うと、思っていらっしゃるようなことが出来ます。 ただ、お使いのサーバーでSSIが使えるようになっていないと駄目なんですけどね。

参考URL:
http://www.scollabo.com/banban/ssi/ssi_005.html

関連するQ&A

  • スタイルシートを使用したホームページの作成について

    教えて下さい。ホームページビルダー7を使用して、現在HPを作成しているのですが、スタイルシートを使って、同じレイアウトのページを作成したいと思っています。イメージとしては、ページ上部にタイトル、左側にメニューバーと考えているのですが、これをテンプレートとして保存して、各ページを作成しているのですが、この方法だと、メニューに1つコンテンツを増やしたりすると、すべてのページに1つずつコンテンツをつけてしていかなければいけません。今後の事を考えれば、コンテンツが増えていくと考えられますので、外部スタイルシート(css?)を使用して、そこを変更すれば全ページのメニューに反映されるような方法をとりたいと思います。 フレームを使用すればそれは簡単ですが、HPにフレームはいろいろな弊害があるので、やめたいと思います。フレーム以外でそれと同じような方法があればよろしくお願いします。 私のホームページの知識は、ビルダーで作成して、HTMLをちょこちょこと変更するぐらいなので、専門的に勉強していません。大体の意味がわかるのですが…。 どうぞよろしくお願いします。

  • フレームを使わないでフレームっぽくみせるには?

    ホームページを製作しようと思っています。 そこで3カラム型の感じのデザインにしたいと思っているのですが、 ページ数を結構つくらなければいけないので、左側にメニュー、右側に広告を張って、真ん中はメインの内容にしようとすると、やはりフレームを使うのが便利なのです。 広告の関係上、広告をインラインフレーム内などに入れることができないので非常に悩んでいます。 フレームを使わないで3カラム型のようなホームページを作るとなると、すべてのページを1個ずつひらいて更新するしかないでしょうか。 メニューをふやしたり、サーバー移動となると気が遠くなりそうで・・・ よろしくお願いいたします!

  • ビルダーで、フレームを使わないフレームのようなものってできるでしょうか?

    宜しくお願いいたします。 フレームを使用して、ヘッダーやメニューやフッターにそれぞれのフレームを割り当てれば、それらの記載内容に変更があった場合でも一つの変更だけで、全てのページに適用されますが、フレームは検索エンジンなどで不利と聞くので、使いたくありません。 でもフレーム無しでは、例えばメニュー内容のひとつに変更があった場合、全てのページを書き換えるしかないのでしょうか? フレームを使用しないで、ヘッダー部やフッター部やメニューを全ページ(もしくは指定したページ)に適用する方法はないものでしょうか? 宜しくお願いいたします。 (わかりづらかったらすみません)

  • フレームについて質問です。

    フレームでないトップページに各コンテンツのメニューをおいて、そのメニューをクリックして各コンテンツにリンクでとんで行きたいんですが。 その各コンテンツをフレームで・・・ってことはできるのでしょうか? 私の知っている範囲では、不可能そうで、テーブルかスタイルシートで、フレーム風にデザインするしかなさそうなのですが、もしもなにか方法があったら教えて下さい。よろしくお願いします。

    • ベストアンサー
    • HTML
  • フレームページをHTMLで1枚に

    現在フレームページをHTML1枚に変更しようと思っているのですが、この場合どういったjavascriptを使用すればいいのでしょうか? ちなみに作ろうとしているのは左右でmenuとmainで分けmenu部分でmainの内容を変更していきたいのですが。

  • フレームをやめたいのですが・・・・

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

    • ベストアンサー
    • HTML
  • ホームページの作成でフレーム代わりはありますか?

    ホームページ作成に関して知ってる方教えてください。 ホームページ作成でフレームを使う方法がありますよね。 ただし、フレームはSEO対策としてよくありません。 そこでフレームのよさを持ちつつSEO対策としても通常と変わらないような作成方法は知っていますか? フレームのよさというのは すべてのページで統一の形を作れることと メニューに変更点があった場合、フレームを変えるだけですべてのページに反映できることだと思っていますが、 何かよい方法知っている方がいたら教えてください。 お願いします。

  • フレームを使用しないフレームのようなページ

    ホームページを制作しています。フレームは使用していません。 コラム集のページがあり、1つのコラムごとに1ページで作りたいと思います。 ヘッダ部分・メニュー部分・フッタ部分は1つのHTMLで、コラムを表示する部分だけ表示を切り替えたいと思っています。 (要はフレームを使用したページのようなものを実現したいです。) iframeを使用しようかと思ったのですが、 コラムページの内容量(縦の長さ)により、親のHTMLのページサイズを変えたいので iframeでは不可能と判断しました。 CSSやJavascriptを用いて上記のような事が実現できないでしょうか? よろしくお願いします。

    • ベストアンサー
    • HTML
  • フレームなしから、フレームありへ

    今、HTMLの勉強をしていて、とりあえず最終課題なるもののために、ほかの人のホームページを作っています。 課題の必須項目の中にフレームがあり、とりあえず組み込もうと思うのですが、トップページはノンフレームでリンク先のHTMLを開くとフレームを組み込んだHTMLを呼び出してかつ、目的のHTMLとメニュ用のHTMLを両方フレームの中に開かせたいのですが、できれば、1つのフレームHTMLだけでそれを実行したいです。 JavaScriptを使ってかまわないので、できませんか?

    • ベストアンサー
    • HTML
  • 固定フレームのついたフレームページにリンクするには?

    メモ帳でホームページを作っています。初心者です。 メニューページにはフレームを使わず、 コンテンツ用ページを二つのフレームを使って、上部に各コンテントファイル、下部にメニュー(各コンテント名を一覧表示)が表示されるようにしています。下部フレームは固定フレームにしたいと思っています。 メニューページで各コンテント名をクリックしたとき、 上部にそのコンテントファイル、下部に固定メニューファイルの表示されたフレームページへリンクさせたいのですが、この方法がわかりません。 初めは、フレームページにアドレスを付けてリンクすればいいのよねー、と試みたのですが、そうすると全てのフレームページ、つまり上部フレームにそれぞれのコンテンツファイルが表示され、下部にメニューファイルが表示されたフレームページのひとつひとつにアドレスをつけないと、リンクできないのでは?と疑問がわきました。 しかし、それではフレームページの固定メニューファイルの各コンテント名をクリックしたときに、上部フレームにはコンテンツファイルのみでなく、各コンテンツのフレームページが表示されてしまい、下部の固定フレームが増えていって(泣)変なことになってしまいますよね。 フレームページ間のリンクは、その固定フレームの各コンテント名のtargetを上部フレーム名にすればよいので問題ないのですが・・・。 メニューページもフレームページにすれば解決するでしょって感じですが^_^;、メニューページには各コンテント名が載せてあるのに下にも同じ項目を並べるのはくどい気がして、ちょっと・・・と思いまして。 ご存知の方よろしくお願いします!

    • ベストアンサー
    • CSS