web-dev-qa-db-ja.com

HTMLサイトの共通ヘッダーとフッター

古いHTMLベースのサイトを作り直そうとしています。コンテンツのヘッダーとフッターはすべてのページに共通するため、別々のファイルに分けたいと思います。現在のサイト作成者は、index.htmlページをコピーし、後続の各ページの本文テキストを置き換えただけで、メニューに変更が加えられ、メンテナンスが非常に面倒になりました。

サーバーサイドインクルード(SSI)ルートに移動し、各ページにヘッダーファイルとフッターファイルを含めて共通のコンテンツを取り除くこともできますが、*。shtml拡張子を持つすべてのファイルの名前を変更する必要がありますか?

既存の拡張子を変更せずにヘッダーとフッターのファイルを含めるためのその他のオプション(サイトに動的コンテンツがないため、phpやaspなどを使用することは保証されません)。

(注:IIS 7.5をWebサーバーとして実行)

3
cpuguru

実際には、SSIの任意のファイル拡張子を使用できます(実際、any拡張子としてサーバーをセットアップして、anyファイルタイプ)。 これはIISのガイドの1つです 、かなり単純に見えます。

あなたのユースケースでは、それが最善の方法のようです。ただし、PHPまたはASP.netを使用することは、将来さらに動的なコンテンツを追加できるため、検討する価値があります。

もう1つの可能性は、独自の「ビルドプロセス」を作成することです。ヘッダー/フッターを別々のファイルに抽出し、それらをHTMLファイルに追加し、結果を別のフォルダーに自己完結型サイトとして保存するプログラム(たとえば、PHPスクリプト)を作成します。次に、そのフォルダーをサイトとしてアップロードします。ただし、ページを変更するたびに(わずかな変更であっても)ビルドスクリプトを実行する必要があるため、適切ではない場合があります。

1
DisgruntledGoat

Phpがオプションの場合、<?php include 'header.php';?>を使用してページにヘッダーとフッターを含める必要があるときに、includeステートメントを使用してヘッダーとフッターを呼び出すことができます。

  • Include(またはrequire)ステートメントは、指定されたファイルに存在するすべてのテキスト/コード/マークアップを取り、includeステートメントを使用するファイルにコピーします。 Webサイトの複数のページに同じPHP、HTML、またはテキストを含める場合、ファイルを含めることは非常に便利です。

  • ファイルを含めると、多くの作業が節約されます。これは、すべてのWebページに対して標準のヘッダー、フッター、またはメニューファイルを作成できることを意味します。次に、ヘッダーを更新する必要がある場合、header.phpファイルのみを更新できます。

header.php」というファイル内のヘッダーのコードがあるとします。これは次のようになります。

<header class="header">Welcome to my website!</header>

ページにヘッダーファイルを含めるには、includeステートメントを使用します。

<html>
<body>

<?php include 'header.php';?>
<p>Some text.</p>
<p>Some more text.</p>
<footer class="footer"> ... </footer>

</body>
</html>

Includeを使用する場合とrequireを使用する場合

Requireステートメントは、HTML/PHPコードにファイルを含めるためにも使用されます。

ただし、includeとrequireには大きな違いが1つあります。ファイルがincludeステートメントに含まれていてPHPが見つからない場合、スクリプトは実行を続けますが、requireステートメントを使用すると致命的なエラーが発生します。

  • requireは致命的なエラー(E_COMPILE_ERROR)を生成し、スクリプトを停止します
    Use require when the file is required by the application.

  • includeは警告(E_WARNING)のみを生成し、スクリプトは続行します
    Use include when the file is not required and application should continue when file is not found.

0
Cʜᴜɴ

以下を使用してPHPの方法を実行することをお勧めします。

<?php require_once "header.php"; ?>

<!-- page HTML here -->

<?php require_once "footer.php"; ?>

現時点でウェブサイトに動的コンテンツがない場合でも、index.phpに変更するよりも。とにかくそれを行う必要があるよりも後の時点で動的コンテンツを追加することができ、後日それを変更することで現在持っているのと同じ問題を抱えています。

0
Rocketrod