• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Smarty includeでテンプレートを読み込めない)

Smarty includeでテンプレートを読み込めない

このQ&Aのポイント
  • Smartyを使用してテンプレートを読み込む際にエラーが発生しています。
  • body.tplは正常に読み込まれますが、contents.tplは読み込めずエラーが発生します。
  • includeファイルの指定方法をいくつか試しましたが、うまくいきません。

質問者が選んだベストアンサー

  • ベストアンサー
  • f_motion
  • ベストアンサー率53% (7/13)
回答No.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";

sakuraniku
質問者

お礼

>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)の記述でいいと考えてしまっていました。 勉強になりました。本当にありがとうございました。

その他の回答 (1)

  • f_motion
  • ベストアンサー率53% (7/13)
回答No.1

テンプレートの位置を多分指定していると思いますが、 それを、下記のように絶対パスで指定すれば大丈夫だと思います。 $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"}

sakuraniku
質問者

お礼

回答どうもありがとうございます。 言葉足らずでしたので、追加いたします。 111というディレクトリを作ったのは、他にも222のようなディレクトリを作って、そちらにもテンプレートを置きたいと考えているからです(数字で場合分け)。 さらに上位のtemplatesも111もテンプレートの入る状態にはできないのでしょうか? /templates/   ├ *.tpl  ├/111/    └*.tpl 回答の通りにしましたところ、上位のtemplatesディレクトリのテンプレートが読み込めませんでした。

sakuraniku
質問者

補足

重ねて質問になってしまうのですが、 {include file="contents.tpl"} に絶対パスを使用してみたのは、111ディレクトリが下記ページの例7-8に該当すると考えたためです。 http://sunset.freespace.jp/smarty/SmartyManual_2-6-6J_html/language.function.include.html これでダメということは、他の原因(ディレクトリ指定やhtaccess)がありそうということでしょうか。 よろしくお願いいたします。