• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Smartのカスタマイズでエラー)

Smartのカスタマイズでエラー

このQ&Aのポイント
  • Smartyのカスタマイズを行いたく、設置でエラーになってしまいました。
  • Smartyのフォルダ構造やファイルの記述は正しいですが、実行するとエラーが表示されます。
  • エラーメッセージには、テンプレートファイルが見つからないという内容が含まれています。対処方法を教えてください。

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

  • ベストアンサー
  • NARH
  • ベストアンサー率82% (88/107)
回答No.3

Smarty.class.php で SMARTY_DIRは定義されていましたが、class 定義の外に実装されています。 if (!defined('SMARTY_DIR')) { define('SMARTY_DIR', dirname(__FILE__) . DS); } こんな感じ。そうすると > $this->template_dir = SMARTY_DIR . "templates"; は Smarty.class.php のあるディレクトリの配下に templates ディレクトリがあるようになりますが、問題ありませんか? PATHがズレているように思うのですが。

wonder_dct
質問者

補足

NARHさん、ご回答ありがとうございます。 Smarty.class.php を読み込む前に SMARTY_DIR を設定しました。 define('SMARTY_DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR); require_once 'Smarty.class.php'; それでも同じエラーが表示されてしまいます。 よろしくご教示お願いいたします。

その他の回答 (3)

  • NARH
  • ベストアンサー率82% (88/107)
回答No.4

おそくなってすみません。 見逃していました。 だいぶ時間がたったので、もう解決されているかと思いますが > define('SMARTY_DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR); を /Smart/lib/smarty_setup.php に仕込んだとすると /Smart/lib/templates をサーチ対象にしちゃうので、やっぱりPATHがずれることになりませんか? (ん?Smart?まぁいいや) これ自体カスタマイズされたフォルダ構成なのですから、安直に define('SMARTY_DIR', 'フルパス');で書いちゃっても(設定ファイルを別で設けないかぎりは)、そんなに意味合いは変わらないんじゃないかと。 1つ上の階層みたいなので define('SMARTY_DIR', dirname( dirname(__FILE__) ). DIRECTORY_SEPARATOR); とするとか

wonder_dct
質問者

補足

NARHさん、度々ご回答ありがとうございます。 いろいろ調べたり、試行錯誤した結果、Smartyを見送ることにしました。 勉強不足だと痛感しております。 再度Smartyは使うはずなので、参考にさせていただきます。 本当にありがとうございました。

  • NARH
  • ベストアンサー率82% (88/107)
回答No.2

エラーの内容はテンプレートファイルが読み込みできませんよと言っています。 気になったのは、SMARTY_DIR ってどこで定義しているのでしょう? define している箇所が見当たりませんが?

  • NARH
  • ベストアンサー率82% (88/107)
回答No.1

ん? > require_once 'Smarty.class.php'; > > class SmartySetup extends Smarty { SmartySetup class を定義しておいて > require_once("../../Smarty/libs/smarty_setup.php"); > $smarty = new Smarty(); それを無視して、わざわざ Smarty のインスタンスをとるのは、何か理由があるのですか? SmartySetup クラスのコンストラクタで指定している設定が読み込まれないと思います。 パッと見た感じ $smarty = new SmartySetup(); とするような意図があるように読めますが。

wonder_dct
質問者

補足

NARHさん、ご回答ありがとうございます。 ご指摘の通り、 $smarty = new Smarty(); から $smarty = new SmartySetup(); に変更したのですが、エラーの内容に変化がありません。 忘れていましたが、環境は以下の通りです。 PHP:5.3.5 Smarty:Smarty-3.0.6 よろしくお願いいたします。

関連するQ&A