« 眼鏡君と言われるのが嫌いだ | メイン | 今も昔も一番便利かも。 »

Templateファイルの置き場所

HTML::Templateに限ったことではないですが、Webアプリケーション(CGI)で使用するテンプレートをどこに置いているかの話。

自分はテンプレートを大抵CGIと同じディレクトリに置いてしまいます。テンプレートのファイル名には「*.tmpl.html」を使用することにしてます。

-|- index.cgi
 |- index.tmpl.html
 |- imgs/画像

などという形で画像もここに置いてしまいます。なので

http://nomadscafe.jp/test/sample_web_app/zip001/index.cgi

に対して、

http://nomadscafe.jp/test/sample_web_app/zip001/index.tmpl.html

とするとテンプレートが得られます。もしセキュリティ的に良くないのであればApacheの設定で表示できなくするのは簡単です。

<Files *.tmpl.html>
Order deny,allow
Deny from all
</Files>

この方法によるメリットとしては、「画像やリンクなどのパスがずれない」ということです。デザイナーから受け取ったHTMLをそのまま使用できます。HTML::Templateのタグを埋め込んだテンプレートをデザイナーに渡しておけばデザイン変更も簡単にやってもらえます。ちなみにHTMLをパーツごとに分けることもしなかったりします。Dreamweaverで一括変換してしまえば済みます。WYSIWYGで作成できなくなるのはデザイナーにとってはマイナスです。テンプレートの拡張子を「.tmpl.html」と「html」を残しているのも同じ理由です。

ただ、これはシンプルな、あるいは簡単なWebアプリケーションの話だと思います。大掛かりにフレームワークやMVCモデルを導入していくとトリガーとなるCGIの中身が抽象化しいって、テンプレートの位置関係が分かりにくくなると思います。そのときはテンプレートと画像は一つのディレクトリに納めてViewがHTML中のパスを自動的に変更してくれたりしたらいいのかな。