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中のパスを自動的に変更してくれたりしたらいいのかな。