今思い出すと、なぜすぐに気づかなかったのか不思議ですが、
smartyを使ってファイルのincludeをしたら、以下のエラーが出てしまいました。
今回は、このエラーの解決方法を書いていきます。
Unable to read template file 'hoge.tpl'
そもそも何を作ろうとしたのか
テンプレートファイルの中から
テンプレートファイルを読み込もうとしました。
例えば下記↓
<html>
<head><title></title></head>
<body>
{include file='hoge.tpl'}
</body>
</html>
hogehoge
画面の表示結果は、こうなるはず。(ここで冒頭のエラーが出てしまった…。)
hogehoge
フォルダ構成は以下
views
┗ templates
┗ test
┣ index.tpl
┗ hoge.tpl
さて、解決していきましょうか。
必要な知識を確認っと・・・。
まず、smartyのマニュアルから下記の文言が…
参照:http://www.smarty.net/docsv2/ja/template.resources.tpl
使用したいテンプレートへのパスを、 $template_dir のルートディレクトリからの相対パスで指定します。
おぉっと、$template_dirとはなんなのか。
こちらもsmartyマニュアルでは、
参照:http://www.smarty.net/docsv2/ja/api.variables.tpl#variable.template.dir
$template_dir
これは、デフォルトのテンプレートディレクトリの名前です。
ファイルのインクルード時にリソースの種類を指定しなかった場合は、
このディレクトリから探します。デフォルトは ./templates で、
これは、実行しているスクリプトと同じ場所にある templates/ ディレクトリを探すということです。
となっており、./templates から対象のファイルをパス指定すべきであることが分かります。
ここまでの情報を得ておきながら、ずっとうまくいかず悩んでいたのですが、
私の場合は、下記の文章をちゃんと読んでいなかったせいだということが分かりました。
$template_dir のルートディレクトリからの相対パス
ずっと、呼び出し元からの相対パスを指定していました。
ルートディレクトリからの相対パスなので、この場合は、以下のようになります。
<html>
<head><title></title></head>
<body>
{include file='../test/hoge.tpl'}
</body>
</html>
views
┗ templates
┗ test
┣ index.tpl
┗ hoge.tpl
解決しました。お疲れ様ですー。