Web制作で「ヘッダーやフッターを毎回コピペして管理するの大変…」という悩み、ありませんか?
そんなときに役立つのが、PHPのinclude()
を使ったパーツ共通化です!
この記事では、HTMLファイルも含めたinclude
の使い方と、相対パス・.htaccess
対応のポイントまで解説します。
もくじ
PHPのinclude()
で共通パーツを読み込む
PHPの include
は、他のファイルを読み込んでその場に挿入する命令です。
このように書くだけで、header.html
の内容をその場所に差し込むことができます。
<?php include("header.html"); ?>
HTMLファイルのままでも読み込める!
includeの対象は.phpファイルだけでなく、.htmlでもOK!
<?php include("parts/header.html"); ?>
これにより、デザイナーがHTMLで管理しているパーツも、PHPで読み込んで共通化できます。
PHPファイルを読み込むパターン(より動的な処理が可能)
HTMLではなく、PHPファイルとして管理しておくと、以下のように処理も含めたヘッダーなどを読み込めます。
<?php include("parts/header.php"); ?>
例)header.php
に現在のページタイトルを出力する処理などを追加可能:
<title><?php echo $pageTitle; ?> | サイト名</title>
相対パスで読み込むには?
相対パスを使えば、階層が違っても柔軟に読み込めます。
<?php include("./common/header.html"); ?>
<?php include("../parts/footer.php"); ?>
./
は現在の階層../
は1つ上の階層
dirname(__FILE__)
を使った安全な書き方
動的なパス管理でよく使われるのがこの書き方:
<?php include(dirname(__FILE__) . '/header_inc.php'); ?>
これは絶対パスとしての安全性が高く、どの階層からでも正確に読み込めるのが特徴です。
ただし、HTMLファイルを相対パスで読み込む場合は、シンプルな書き方の方が扱いやすいです。
<?php include("parts/header.html"); ?>
.htaccess
でHTMLもPHPとして動かす(応用)
通常、.html
ファイルではPHPが動作しません。
でも .htaccess
を使えば、HTMLファイル内でもPHPが使えるようにすることも可能です。
例).htaccess
に以下を記述:
AddType application/x-httpd-php .html
これで .html
ファイルも PHPとして処理されます。
ただし、セキュリティやメンテナンス性の面から常用は推奨されません。
→ 基本的には .php
拡張子で管理しましょう!
ディレクトリ構成の例
/site/
├── index.php
├── about.php
├── parts/
│ ├── header.html
│ └── footer.php
index.php
の中身例:
<?php include("parts/header.html"); ?>
<h1>トップページ</h1>
<?php include("parts/footer.php"); ?>
共通パーツ内のリンクを簡単管理!<?php print $Path; ?>
の使い方
共通のヘッダーやフッターをPHPでinclude()
していると、/index.php
にいるときはリンクが通るのに、/about/index.php
にいるとリンク切れになる…
そんなときに便利なのが、相対パスを自動で補完できる $Path
変数です。
こんなとき困る!
<!-- 共通header.htmlなどに書いたリンク -->
<a href="contact.php">お問い合わせ</a>
↑ トップページ(/index.php
)では通るけど、
サブページ(/about/index.php
)では about/contact.php
を探してしまってリンク切れ!
解決策:パスのプレフィックスを変数で管理!
まず、各ページで $Path
を定義しておきます。
index.php
(トップページ)
<?php $Path = "./"; ?>
<?php include("parts/header.php"); ?>
about/index.php
(サブディレクトリ)
<?php $Path = "../"; ?>
<?php include("../parts/header.php"); ?>
共通パーツ(header.php)内の書き方
<nav>
<ul>
<li><a href="<?php print $Path; ?>index.php">ホーム</a></li>
<li><a href="<?php print $Path; ?>about/index.php">会社概要</a></li>
<li><a href="<?php print $Path; ?>contact.php">お問い合わせ</a></li>
</ul>
</nav>
$Path
がそれぞれのページで相対パスになっているので、
共通パーツ内のリンクがすべてのページで正しく機能します!
注意点
$Path
を使うには読み込む前に必ず変数を定義しておくこと!- JavaScriptやCSSの読み込みパスも
$Path
を使えば統一可能:
<link rel="stylesheet" href="<?php print $Path; ?>assets/style.css">
<script src="<?php print $Path; ?>assets/script.js"></script>
WordPressでは不要(get_template_directory_uri()
などを使うため)
まとめ
項目 | 内容 |
---|---|
HTML読み込み | <a> やナビなど静的要素に便利 |
PHP読み込み | 動的要素・変数使用に最適 |
相対パス対応 | ./ , ../ などで柔軟に管理可能 |
dirname(FILE) | 絶対パスで安全に管理したいときに有効 |
.htaccess | .html にPHPを使いたい場合の裏技(注意あり) |
おすすめの使い分け
ファイルタイプ | 使い道 |
---|---|
.html |
ナビ・フッター・単純なデザインパーツ |
.php |
ロジック付きのヘッダー、条件分岐を含むテンプレートなど |
共通パーツの管理をラクにしたいなら、include()
を上手に使って、
効率的でミスのないWeb制作を目指しましょう!