PHPでテンプレートをインクルードさせる

今では当たり前になってきた、サイト更新を簡単にしてくれるCMS(コンテンツマネジメントシステム)。でもコンテンツが少ない小規模サイトや、一度作ったら頻繁に更新しないサイトなどの場合、データベースを必要とするCMSの導入は逆にデメリットが大きい気がします。

小規模サイトでOK

CMS化に向いていないWEBサイト

  • 一度作ったらコンテンツの更新は殆ない
  • コンテンツ、ページ数が少ない
  • 新しいコンテンツの追加は常に外注する
  • 予算もないため小規模サイトでいい

それなら、従来の静的なHTMLだけで作ればいいだけじゃん。という話ですが、ヘッダーやサイドバーなんかは読み込むテンプレート形式にしたい・・・。

従来のHTMLオンリーなサイトは、コンテンツを追加すると、大体において全ページのリンク修正が発生します。CMSに慣れてしまうと“なんて無駄な作業なんだ”と感じてしまう(笑。

かといって、フレームやJSでやる方法はSEO的にちょっと避けたいところ。

PHPでファイルを読み込みテンプレート化

そんなときは、やっぱりPHPがかなり便利!
PHPインクルード
PHPが動くサーバーなら、PHPで任意のテンプレートファイルを読み込ませることができます。HTML、PHPはもちろんテキストファイルも読み込める。

<?php include("ファイル名"); ?>

読み込みの重複を絶対させない場合

<?php include_once("ファイル名"); ?>

include_once文で外部ファイルを一度だけ読み込む

拡張子が.htmlでもPHPが動くようにする

このままだと、拡張子が.phpのファイルでしか動作しないので、『.htaccess(ドットエイチティーアクセス)』ファイルをちょろっと記述して、htmlでも動作させるようにします。

※但し、htaccessが使えるサーバーに限る

htaccessへの記述

書く内容(AddType ディレクティブという設定内容)はサーバーによって違うようなので、使用しているサーバーにて要確認。

【サーバー別】HTML上でPHPを実行するための.htaccessの記述

私が使用しているエックスサーバーは、以下の記述で動作しました。(PHP5.5切り替え後のサブドメインで確認)

■PHPのバージョン記述なし

AddType x-httpd-php .html .htm

■PHPのバージョン記述あり

AddHandler x-httpd-php5 .html .htm
AddHandler x-httpd-php5.5 .html .htm

ちなみに、トップレベルドメインのフォルダ内に自動で作成されていた.htaccessは、「AddHandler x-httpd-php5.5~」のPHPバージョン記述がされていた。

.htaccessがサーバーになかったらメモ帳などで作る

通常はルート直下にありますが、自動生成されないサーバーもあるのでその場合は自分で配置します。

  1. 空のテキストファイルに設定内容を記述
  2. htaccess.txt(任意のファイル名)で保存
  3. サーバー内にアップロード後「.htaccess」にリネームする

PHPインクルード書き方まとめ

■テンプレートファイルをheader.htmlとした場合

同階層にある
<?php include("header.html"); ?>
任意のフォルダ内にある(相対パスで記述)
<?php include("../temp/header.html"); ?>

便利だからとインクルードだらけにしない

PHPは使用すればするだけ動作が重くなりがち。あまりに読み込むファイルが多いとページに 負荷がかかってしまい、表示速度に影響がでてきます。

小規模サイトでCMSも導入してないのに、表示速度が遅かったらいろいろ残念です。あくまで必要最低限にしよう。

PHPで外部RSSを読み込むことも

外部ブログ

サイト自体は更新しないんだけど、無料ブログを利用して新着情報やお知らせなどは更新したい…。というときもPHPが大活躍!自サイトは更新せずとも“更新してる風”にみせることができるんです(笑

殆どのブログはRSSフィード(XML形式)で新着記事を自動形成するので、そのデータを自サイトにPHPで読み込ませることで表示が可能。以下サイトが参考になりました。

■PHP×キャッシュ付きモジュール

php :: MagpieRSS :: 他サイトのRSSを表示するクラスライブラリ

■GoogleAPI×javascript

サイトに外部ブログのRSSを表示する方法と、記事タイトルが長すぎる場合に省略表示する方法メモ。

API×JSのほうが、簡易かつ動作が軽いかなぁ~?と感じましたが、JSファイルで表示させるためHTML(ソースの中)に読み込むRSSは実際に反映されない…。API×JS版は、PHPを導入すると動作が重かったり、PHPが使えないサーバーに良いかもしれません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です