山梨県でホームページ/Webサイトの制作をしています。コンテンツを重要視した使いやすいホームページを提供します。
2009-11-10

レイアウトを読み込もう

この記事は2009年11月に書かれたもので、内容が古い可能性がありますのでご注意ください。

PHPでレイアウトを読み込む

前回のエントリ『グローバルエリアがフレームのサイトってまだあるんだ』でちょっと書いたんだけど、やっぱり各ページで共通の項目は、ひとつのファイルから読み込むほうが楽です。 でも、<iframe>ってわけにはいかないので。

PHPの関数

PHPには、外部のファイルを読み込むための関数があります。 主なものは、requireincludeです。

  • require⇒ファイルの読み込みに失敗すると、以降のスクリプトは実行しない
  • include⇒ファイルの読み込みに失敗しても、以降のスクリプトを実行

どちらの関数も効果そのものは同じです。 …というわけなので、includeのほうが、いいかなと。

  • require_once
  • include_once

↑ こうすると、1度だけ読み込みをするということになります。

関数などは同じファイルを繰り返して読み込むとエラーになるので、読込みをするファイルに動的な要素(プログラム)を含む場合は、こっちを使います。

それぞれの関数はレンタルのWebサーバによっては動作しない場合もあるかもしれません。

使い方は簡単、テンプレート化して読み込むだけ

例えばヘッダーだったら…

<?php include("header.tpl"); ?>

↑ こんな感じで読み込みます。 拡張子は.htmlでも.phpでもかまいませんが、個人的には.tplを良く使います。

layput-1

共通部分(グローバルエリア)が図のように3箇所だったら同じように…

  • <?php include(“header.tpl”); ?>
  • <?php include(“left.tpl”); ?>
  • <?php include(“footer.tpl”); ?>

これでOKです。 あとは、HTMLファイルをPHPファイルに変えるだけです。 HTMLソースもずいぶんスッキリすると思います。

hoge.html

hoge.php

リンク切れにご用心

以上の作業で読み込んだファイルは、静的なファイルです。 深いディレクトリにあるWebページの場合、相対リンクの階層が変わるためリンク切れを起こしてしまいます。

PHPスクリプトを使って正しいリンク先の相対パスを生成させることも可能ですが、とりあえず絶対パスにしておけばリンク切れの問題はありません。

関連記事