- ベストアンサー
Smarty includeでテンプレートを読み込めない
- Smartyを使用してテンプレートを読み込む際にエラーが発生しています。
- body.tplは正常に読み込まれますが、contents.tplは読み込めずエラーが発生します。
- includeファイルの指定方法をいくつか試しましたが、うまくいきません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
まずcontents.tplのみを呼び出して実行出来ますか? templatesにフォルダを分けているなら、 下記のようになります。 /templates/ ├ body.tpl ├/111/ └contents.tpl ├/222/ └contents.tpl body.tplを呼び込んで、その中で、 {include file="111/contents.tpl"} {include file="222/contents.tpl"} で読み込めると思うのですが。 $this->template_dir = "/home/public_html/templates"; $this->compile_dir = "/home/public_html/templates_c"; $this->config_dir = "/home/public_html/conf"; Windowsの場合は、 $this->template_dir = "C:/home/public_html/templates";
その他の回答 (1)
- f_motion
- ベストアンサー率53% (7/13)
テンプレートの位置を多分指定していると思いますが、 それを、下記のように絶対パスで指定すれば大丈夫だと思います。 $this->template_dir = "/home/public_html/111/templates"; $this->compile_dir = "/home/public_html/111/templates_c"; $this->config_dir = "/home/public_html/111/conf"; 呼び出すときは、どこからでも下記ような感じで呼び出せます。 {include file="contents.tpl"}
お礼
回答どうもありがとうございます。 言葉足らずでしたので、追加いたします。 111というディレクトリを作ったのは、他にも222のようなディレクトリを作って、そちらにもテンプレートを置きたいと考えているからです(数字で場合分け)。 さらに上位のtemplatesも111もテンプレートの入る状態にはできないのでしょうか? /templates/ ├ *.tpl ├/111/ └*.tpl 回答の通りにしましたところ、上位のtemplatesディレクトリのテンプレートが読み込めませんでした。
補足
重ねて質問になってしまうのですが、 {include file="contents.tpl"} に絶対パスを使用してみたのは、111ディレクトリが下記ページの例7-8に該当すると考えたためです。 http://sunset.freespace.jp/smarty/SmartyManual_2-6-6J_html/language.function.include.html これでダメということは、他の原因(ディレクトリ指定やhtaccess)がありそうということでしょうか。 よろしくお願いいたします。
お礼
>f_motionさん 何度もありがとうございます。 {include file="111/contents.tpl"} ↑で解決しました。 念のため、状況をご報告します。 ファイルの配置は下記の通りです。 ├index.php └/templates/ ├/111/ ├ body.tpl └ contents.tpl ├/222/ ├ body.tpl └ contents.tpl また設定は、仰る通りです。 $this->template_dir = "/home/public_html/templates"; $this->compile_dir = "/home/public_html/templates_c"; $this->config_dir = "/home/public_html/conf"; この状態でindex.phpから、 $smarty->display('111/body.tpl'); は読み込めます。 ただ、body.tplから {include file="111/contents.tpl"}・・・(1) は読み込めますが、 {include file="contents.tpl"}・・・(2) ではダメでした。 てっきり呼び出し元のbody.tplと、読み込むcontents.tplが同ディレクトリなので、(2)の記述でいいと考えてしまっていました。 勉強になりました。本当にありがとうございました。