プロが教えるわが家の防犯対策術!

こんばんは。
私はHTMLに関しては、簡単なホームページを作る事ができる程度です。お手柔らかにお願いします(^^)。

私は自分のホームページを持っているのですが、大体のデザイン(外枠)をHTML等に詳しい友人に作ってもらって、その中だけをいろいろいじくっています。
ホームページの内容はコンテンツの部分と、メニューの部分が分かれています。よくあるフレームで分かれているような感じなのですが、実際はフレームを利用しておらず、すべてのページに同じHTMLデータが打ち込まれています。しかし、これでは「メニュー」部分に変更があればすべてのページを変更させなくてはならず非常に面倒です。

そこで、フレームのように、別のところで「メニュー」の内容をいじくれば、すべてのページに変更が反映されるような方法はありますか?フレームは使いたくありません。宜しくお願いします。

(「できない」なら「できない」とズバッとお願いします!)

A 回答 (4件)

できることはできます。


簡単な方法ならメニュー部分を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などのソフトを使えば一括に置換してくれる機能があるのでそれで修正したほうが簡単かも。
    • good
    • 0

私のやっている簡単な方法は、


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

私もメニューは面倒臭く感じていました。


そこでこんなものを作りました
ご参考になればと思います。

使いまわしが出来るように---部で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なら動くと思いますよ。
内容については勝手に解釈してくださいね。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/05/09 08:05

SSIのincludeコマンドという物を使うと、思っていらっしゃるようなことが出来ます。


ただ、お使いのサーバーでSSIが使えるようになっていないと駄目なんですけどね。

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!