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

10年以上前にフレームを駆使したサイトを自作していた者です。
最近また1からHPを作ろうかと考えていまして、
以前作ったHPを現代らしいレイアウトにする所から入ろうと思っているのですが
疑問のような物が生まれました。

以前作ってあったHPは基本的に、html1枚(以下top)をまずフレームで縦に2分割してあります
(以下左側のページをleft、右側のページをright)
leftに縦並びでコンテンツ1、コンテンツ2…と並べ、クリックをすると内容がrightに表示されます。
つまりHPにどんな内容変更があろうともtopはいじられず、
コンテンツの追加があればleftを修正するだけです


このレイアウト自体は今も崩したくはないのですが、
フレームサイトは様々なデメリットがあり、くわえて現代的ではないので
フレームを使わない構成のサイト作りを考えています

そうすると、leftとrightを統合した1枚のページを
top1、top2…と作り続けることになりますが、
コンテンツ(上記のleftにあたる部分)に変化があった場合、
全てのページ(のleftにあたる部分)を同じように都度いちいち修正するのは途方も無い苦労です。
以前ならleft1ページを修正するだけで済んだ工程です。

皆様がこんな苦労をしているわけはないのでしょうが
どうすればいいかわかりません。
ブログをレンタルしてHPっぽくすれば解決はしますが、当方HPを作成希望しています

最近はwikiやブログの普及によって個人HPを所持する人は少ないように感じます。
現代的なHPは企業などのHPでしか見ませんが、もうそういう時代なのでしょうか?

詳しい方、いろいろ教えてください。大変悩んでいます

A 回答 (7件)

ご利用のサーバーを借りてらっしゃるISPのマニュアルを確認してください。



もしくは、下記ファイルを上げて確認してください。
★タブは_に置換してあるので戻してください。
★文字コードはUTF-8
★/SSI/header_navigationList.htm

 サーバーのルートからのパス・・/SSI/ディレクトリに"header_navigationList.htm"というファイル名で保存するという意味

/index.shtml
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>SHTMLtest</title>
<style media="screen">
<!--
header,section,footer{
margin:0;padding:0;
width:90%;min-width:640px;max-width:1000px;
margin:0 auto;
}
section{
position:relative;
}
section h2,section p,section section{
margin-left:220px;
}
section nav{
position:absolute;
top:0;left:0;
width:200px;
padding:5px;
height:100%;
}
section section{
margin:0;
width:auto;min-width:0;
min-height:400px;
}
/* 色づけ */
body{background-color:gray;}
header{background-color:aqua;}
section{background-color:silver;}
section section{background-color:white;}
section nav{background-color:yellow;}
footer{background-color:orange;}
-->
</style>
</head>
<body>
_<header>
__<h1 id="title">Your title</h1>
__<nav>
<!--#include virtual="/SSI/header_navigationList.htm" -->
__</nav>
_</header>
_<section>
__<h2>本文</h2>
__<section id="A">
___<h3>項目タイトル</h3>
___<p>この項目の記事</p>
__</section>
__<section id="B">
___<h3>項目タイトル</h3>
___<p>この項目の記事</p>
__</section>
__<section id="C">
___<h3>項目タイトル</h3>
___<p>この項目の記事</p>
__</section>
__<nav>
<!--#include virtual="/SSI/section_contentTable.htm" -->
__</nav>
_</section>
_<footer>
__<h3>A nice footer</h3>
_</footer>
</body>
</html>

/SSI/header_navigationList.htm
___<ul>
____<li><a href="/">TOP</a></li>
____<li><a href="/Books">著書</a></li>
____<li><a href="/Contact">問い合わせ</a></li>
____<li><a href="/Profile">プロフィール</a></li>
___</ul>

/SSI/section_contentTable.htm
__<h2>目次</h2>
__<nav>
___<ul>
____<li><a href="#A">A</a></li>
____<li><a href="#B">B</a></li>
____<li><a href="#C">C</a></li>
___</ul>
__</nav>
    • good
    • 0
この回答へのお礼

サーバー上じゃないと動作しないとの事で、
サーバーを現在契約していなかったので、契約ののち
試行錯誤してました。
お返事が大変遅れて申し訳ございません

サーバーは
https://www.chobi.net/index.phpのfreeプランを契約しています
SSIという物はどうやら対応していないようです

丁寧に教えていただき、ありがとうございました

お礼日時:2016/07/26 04:31
    • good
    • 0
この回答へのお礼

サーバー上じゃないと動作しないとの事で、
サーバーを現在契約していなかったので、契約ののち
試行錯誤してました。
お返事が大変遅れて申し訳ございません

かなり熟読させていただきましたが
どれも私には難しい物で、試行錯誤しましたが
理解には至りませんでした。申し訳ございません

丁寧に教えていただき、ありがとうございました

お礼日時:2016/07/26 04:31

SSI(Server Side Include)でも出来ます。


が、PHPより簡単、と言う事では有りませんので・・・。

例えば、質問の例では、left.htmlを共通ファイルにするのなら
<!--#include file="left.html" --> を記述。

この1行をサーバ側で展開するので、アクセスした時点では展開されている。ここはPHPも同じです。

引用側は黙っていると、拡張子は.shtmlにする必要があります。
.htmlのままにしたいなら、.htaccessで以下の記述で制御します。
AddType text/x-server-parsed-html .shtml .html

つまり,SSIもPHPも手間は同じです。

SSIは負荷の関係で許可していないサーバもあるので確認が必要です。

また、left.htmlにはナビゲーションメニューを書く事が多く、
設置するディレクトリを良く考える必要があります。
SSIではカレントディレクトリの上位階層を経由するパス名は指定出来ません。

尤も、SSI、PHP関係なく、絶対パスにして置けば問題有りませんが・・。

いずれにしても、SSIかPHPで共通化部分をインクルードしないと、
とてもメンテに耐えられないと思います。
    • good
    • 0

もっとも簡単なのは、ウェブの創成期からあるSSIをつかう方法。


今から出かけるので後で
    • good
    • 0

>>実装はできませんでした


PCローカルでは展開されません。サーバ上で動きます。

>>難しいですね。
PHPで構文作るわけでは無いし、1行入れるだけなんですが・・・。
極めて簡単なので、全サイトの全ページに組み込んで有ります。

<?php include("XXXXX.php"); ?>を組み込んだソースの拡張子は
黙っていると.phpにする必要が有りますが、拡張子を.htmlのままにする方法を使います。

.htaccessというファイルをサーバに設置し、以下を記述します。
AddType application/x-httpd-php .htm .html
    • good
    • 0
この回答へのお礼

サーバー上じゃないと動作しないとの事で、
サーバーを現在契約していなかったので、契約ののち
試行錯誤してました。
お返事が大変遅れて申し訳ございません

結論から言うとやはり実装できませんでした。
丁寧に説明いただいたのに申し訳ございません。
大変知識不足なので仰っている意味を完全に把握できません

表示したい場所に<?php include("left.php"); ?>と記述、
このファイルをmain.htmlとする。
left.htmlを用意して、拡張子をphpに変更、
2つのファイルを同階層に置いてサーバーにアップ、
結果、何も起こらないという事になりました。

よくわからないのでmain.htmlをmain.phpとしてみたりしましたが
そうするとサーバーエラーになりました。

また、.htaccessをアップし、
main.htmlとleft.htmlをアップした場合はサーバーエラーになりました。

ちなみにサーバーは
https://www.chobi.net/index.phpのfreeプランを契約しています


丁寧に教えていただき、ありがとうございました

お礼日時:2016/07/26 04:29

HTMLだけで完結したいならば、WEBオーサリングソフト(DreamWeaverはテンプレート機能があります)を使うか、置換処理するしかないかと思います。

    • good
    • 0
この回答へのお礼

HTMLだけで完結したいわけではありません、というより
知識が乏しいので選択肢が少ないという状態です

お礼日時:2016/06/30 04:46

>>以前ならleft1ページを修正するだけで済んだ工程です。



基本的にはleftの変更が生じた場合は、全ページ変更する必要が有ります。

この手間を解消する為、各ページは、left部分をphpでインクルードします。

<?php include("left.php"); ?>
この1行でleftの内容が展開されてhtmlソースになります。

サーバ内では、各ページのソ-スは<?php include("left.php"); ?>がそのまま入っていますが、ページをアクセスしてサーバから出る時に、通常のhtmlに展開されて出て行きます。

left.phpの内容は、leftに必要なhtml部分だけを記述した物になります。
拡張子は.phpですが、中身はhtmlソースです。

色々な説明サイトがあります。
「php インクルード]で検索して下さい。下は例。
https://msdn.microsoft.com/ja-jp/library/cc29522 …
    • good
    • 0
この回答へのお礼

PHPという技術を初めて知りました。ありがとうございます
いろいろ調べて軽くいじってみましたが実装はできませんでした…
難しいですね。でも知ることができて良かったです

お礼日時:2016/06/30 04:46

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