htmlの一部をphpで外部ファイル化
- (2011-07-15 18:41:40)
簡易CMS的発想
小規模なwebサイトでは、フレームワーク全体を下手にCMS化するより、必要や実需要に応じて、静的なhtmlの一部にphpなどの動的html導入(コンテンツのダイナミックな生成)した方が自然発生的で無理がないweb制作手法かもしれない。
「動的html導入」の考え方が発展するとCMSという発想になるが、そういう需要に至っていない小規模なwebサイトがはじめからガチガチのCMSを導入することは、むしろ柔軟性が極端に悪くなり弊害が多いと感じるようになった。
フッター部分など共通部分の切り出し案
当社ホームページはコンテンツの一部にCMSを取り入れているが、やはり主要部分はhtmlファイルが占めている。
しかし、フッターはどのページにも同じ内容で、またGoolge Analyticsの長いスクリプトを全ページに挿入するのも大変。この共通部分は切り出してもよいのでは、と昔から思いつつそのままだった。
一括置換ソフトを使えば、共通部分の変更もそれほど苦ではない。しかし、時間の経過で微妙にフッターに違いが発生すると一括置換の効用も効きが悪くなる。
共通部分の外部ファイル化
●外部ファイル(external files)化できそうな部分:
・ヘッダー
・サイドメニュー(左)
・サイドメニュー(右)
・フッター
●htmlファイル内でのphpの記述方法:
include、include_once、require、require_once が使える。
デフォルトは include がおすすめか。
<?php include("/home/users/mydomain/ex_footer.php"); ?>
※外部ファイルの拡張子は問わない。txt,html,php,cgi,pl,incなど可。
※相対パスでも絶対バス(フルパス)でもよいが、httl://で始まるURLは不可。
●htmlファイルをphp実行可能(phpモード)にする設定
.htaccessに下記の一行を追加:
AddType application/x-httpd-php .htm .html
※処理速度の差について。phpモードではいったんphpコードを実行しhtmlデータをダイナミックに生成したあと、通常htmlのようにテキスト・画像などを送出するので2段方式の処理となる。
そのため通常htmlより負荷が発生し全体のスループットが低下すると推測される。平均的なWebサーバーとコンテンツでは、体感できるほどのスピード差になるとは思えないが、やや悩みどころ。
外部ファイル化を実際にやってみて
上気、外部ファイル化が有望と考えた4部分のうちで、ヘッダー部分はあきらめた。<title>や<description>など個別に記述したいタグがあること。
通常ヘッダー部分にはcssファイルの指定が含まれる。そのため他のパーツや本文の個別の作成やメンテナンス時、cssなしの表示となりメンテナンス性が極端に悪くなる、などがその理由。
<title>、<description>、スタイルシート以外のヘッダー部分を外部ファイル化すれば問題ないかもしれない。