2021.05.14
2021.05.10
前回のブログで、「具体的なincludeの方法については、ネットで検索してね」と書きましたが、それではあまりに不親切すぎますので、本ブログでも記載しておきます。
■PHPの場合
まず、埋め込みたいコンテンツを用意します。
doctype宣言もタグもも必要ありません。埋め込みたい内容だけでいいです。
適当なファイル名をつけて保存します。(例えば、header.htmlなど)
保存場所は特に決まりはないですが、ヘッダやフッタなど全ページ共通の部品をインクルードするなら、第一階層(そのサイトの一番上の階層)がいいでしょう。
次に、受ける側のファイルの中の、埋め込みたい場所に、インクルード用の特殊なタグを挿入しておきます。
例えば、
こんな感じで。
ダブルクォーテーションで挟まれた文字列は、埋め込みたいコンテンツ部品のファイル名を記述します。相対パスが使えますので、例えばheader.htmlが第一階層にあり、それを埋め込みたいファイルが第二階層にあった場合は、
と記述すれば一つ上の階層を参照します。
■SSIの場合
埋め込みたいコンテンツは上記PHPと全く同じです。これを用意しておきます。
次に、埋め込みたい場所にインクルード用のタグを記述します。、
このように記述すればうまくいきます。
ちなみに、これは第一階層にheader.htmlがある場合です。相対パスではなく絶対パスなので、受け側のファイルがどの階層にあってもちゃんとheader.htmlを読み込みます。
2021.05.09
サイト内で、例えばヘッダやフッタなど、各ページに同じコンテンツを使用したい場合に、各ページにいちいち同じ記述をしていくのは大変です。また、修正をしなくてはならなくなったときには全ページ直さなくてはなりません。4~5ページしかないサイトならともかく、何十ページ、何百ページもある巨大なサイトでは途方に暮れます。
これを、効率的に行うために、よく使われるのが「インクルード」という手法です。
A.埋め込み用のファイルを一つ用意する(各ページ共通の部品)
B.埋め込まれる側(受け側。各ページ)に、埋め込み用のタグを記述する
埋め込みの方法としては、主に、
1.PHPを使う
2.SSIを使う
3.Dreamweaverなどのテンプレート機能を使う
これらがよく使われる技法ですが、3のDreamweaverのテンプレート使用の場合は、そもそもDreamweaverを持っていなければ使えませんので、一般的には上記1か2になるでしょう。
PHPとSSIのどちらがいいかについては、これまたネットで調べると山ほど出てきて、細かくベンチマークをとって調べている人もいたりしますが、実際にどちらがいいかについては諸説あり、明確に「こっち!」とは言えないのが現状です。
私の個人的な意見としては、「どっちもさほど変わらないのでは?」と思っています。昔は、サーバーに負荷がかかるということが言われていましたが、最近のサーバーは性能が格段に良くなっているため、そんなに言うほどの負荷はかからなくなっているか、比較するほどの差はないような気がします。
現に、各社サーバーとも「PHP、SSI共に使用可能です」というようにアナウンスしてますから、どちらにしても特に問題はないのでしょう。
さて、具体的なincludeの方法については、ネットで検索すれば山ほど出てくるので、それを参考にしていただくとして、ここでは、注意点についてお知らせしておきます。(というより、自分が忘れないように備忘録として)
インクルードする場合の、.htaccessの記述に注意
まず、PHPを使う場合は、本来、埋め込むファイルも埋め込まれるファイルも、拡張子を「.php」にする必要があります。しかし、現実には既に作成済(またはある程度作成が進んでいる)の場合が多いと思うので、拡張子は「.html」から変更したくないですよね。
そこで、.htmlをPHPとして認識させるために、.htaccessというファイルに、「ある記述」をしてそれをサーバーにアップしておけばOKです。
厄介なことに、サーバーによって.htaccessの記述方法が微妙に違うことがあるので、注意が必要です。
私もネットで調べた情報に従って記述したら、私が使用しているサーバーではうまく作動しなかった(エラーが返された)ので困ったことがありました。
ちなみに、ConoHaサーバーでは、
AddType application/x-httpd-lsphp .html
と書きます。
次に、SSIを使う場合です。こちらも本来はファイル名の拡張子を「.shtml」にする必要があります。しかしこれもPHPと同様の理由で、拡張子を「.html」のまま使いたいので、.htaccessに記述を加えます。
こちらもやはりサーバーによって微妙に違っていて、エラーが返されることがあります。
ちなみに、ConoHaサーバーでは、
AddType text/html .html
AddHandler server-parsed .html
と記述します。
PHPの場合もSSIの場合も、他のサーバーではまた違った記述が必要になる場合がありますので、ネットで検索するか、サーバー会社に直接問い合わせてみてください。