
よろしくお願いします。
まずphpファイルから
$smarty->display('111/body.tpl');(*111はディレクトリ名)
を呼び出して、さらにbody.tplと同ディレクトリにあるcontents.tplを読み込もうとしています。
はじめのbody.tplは読み込むことができブラウザで表示されるのですが、contents.tplは読み込めず、
Warning: Smarty error: unable to read resource: "contents.tpl" in <絶対パス>/Smarty/Smarty.class.php on line 1095
のエラーが出てしまいます。
ちなみに/111/というディレクトリは、$template_dir以下、$template_dir/111/です。
{include file="contents.tpl"}
{include file="file:contents.tpl"}
{include file="絶対パス/contents.tpl"}
{include file="file:絶対パス/contents.tpl"}
など試しましたが、ダメでした。
知恵をお貸しください。よろしくお願いします。
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";
>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)の記述でいいと考えてしまっていました。
勉強になりました。本当にありがとうございました。
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"}
この回答への補足
重ねて質問になってしまうのですが、
{include file="contents.tpl"}
に絶対パスを使用してみたのは、111ディレクトリが下記ページの例7-8に該当すると考えたためです。
http://sunset.freespace.jp/smarty/SmartyManual_2 …
これでダメということは、他の原因(ディレクトリ指定やhtaccess)がありそうということでしょうか。
よろしくお願いいたします。
回答どうもありがとうございます。
言葉足らずでしたので、追加いたします。
111というディレクトリを作ったのは、他にも222のようなディレクトリを作って、そちらにもテンプレートを置きたいと考えているからです(数字で場合分け)。
さらに上位のtemplatesも111もテンプレートの入る状態にはできないのでしょうか?
/templates/
├ *.tpl
├/111/
└*.tpl
回答の通りにしましたところ、上位のtemplatesディレクトリのテンプレートが読み込めませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
バッチを用いたフォルダの自動移動
-
makefile でファイルをコピーす...
-
【PHP】declare命令で”Fatal er...
-
Subversionのリポジトリの削除
-
ApacheでのSSIを利用する際の拡...
-
filemtimeについて
-
現在位置より2つ上のディレク...
-
Subversionで、ファイルをリネ...
-
rmdirでフォルダが消せません
-
URLの中の~の記号の意味は?
-
1桁7セグメントLEDの部品高さ
-
PHPのif文でその処理を途中で抜...
-
DBに格納された画像データを縮...
-
トランザクションが原因?DBに...
-
【file_exists】ファイルが存在...
-
拡張子php画像をjpg画像等に変...
-
phpでアドレス形式をチェックす...
-
エラーコードの意味を教えてく...
-
文字列全体に対する置き換え [...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
Subversionのリポジトリの削除
-
CFileDialogの最初のディレクト...
-
makefile でファイルをコピーす...
-
現在位置より2つ上のディレク...
-
visualstudioでc#のdllができない
-
JAVA内で複数のファイルを削除...
-
rmdirでフォルダが消せません
-
バッチを用いたフォルダの自動移動
-
glob関数で日本語文字が取得で...
-
Subversionで、ファイルをリネ...
-
Makefile.inとMakefile.am
-
O/Rマッパーの選定
-
WSHやVBSについて
-
DLL のロードの順序
-
絶対パス?絶対アドレス?意味...
-
LoadLibraryの戻り値(HMODULE)...
-
ツリーメニューを縮小させたい
-
wordpressの記事をカスタマイズ...
-
アプリケーション・ディレクト...
おすすめ情報