• ベストアンサー

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

こんばんは。 私は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