我对此并不十分肯定,但是从巧妙的说明http://www.smarty.net/docs/en/installing.smarty.basic.tpl中读取,每次我有一个新的PHP脚本时,我都必须设置$ template_dir,$ compile_dir,$ config_dir和$ cache_dir。换句话说,我必须为每个PHP脚本添加以下代码行:
$smarty->setTemplateDir('/.../templates/');
$smarty->setCompileDir('/...templates_c/');
$smarty->setConfigDir('/.../configs/');
$smarty->setCacheDir('/.../cache/');
这是对的吗?你们做过任何“快捷方式”以避免这种情况吗?
答案 0 :(得分:2)
您应该将所有这些内容设置在一个公共配置文件中,然后在需要时包含它。
include( 'path/to/common_config.php' );
然后,在您的common_config.php中,您可以执行以下操作:
//set up Smarty
require_once( dirname( __FILE__ ) . '/smarty/Smarty.class.php' );
$smarty = new Smarty;
$smarty->error_reporting = E_ALL & ~E_NOTICE;
$smarty->setTemplateDir( dirname( __FILE__ ) . '/../templates' );
$smarty->setCompileDir( dirname( __FILE__ ) . '/../smarty/templates_c' );
使用“dirname( FILE )”将确保路径始终相对于公共配置文件。
现在您需要做的就是使用display方法和模板文件的名称:
$smarty->display( 'index.tpl' );
答案 1 :(得分:0)
我认为更好的解决办法是延长Smarty课程。
<?php
require_once SMARTY_DIR . 'Smarty.class.php';
class Application extends Smarty {
public function __construct() {
parent::__construct();
$this
->addTemplateDir (TPL_DIR)
->setCompileDir (COMPILE_DIR)
->setConfigDir (CONFIG_DIR)
->setCacheDir (CACHE_DIR)
->setPluginsDir ( array ( SMARTY_DIR.'plugins', PRESENTATION_DIR.'smarty_plugins' ) );
$this->caching = false; // set Smarty caching off by default
$this->muteExpectedErrors(); // can't remember what this does exactly, but it tunes down the sensitivity of errors
$this->debugging = SMARTY_DEBUG; // setting controlled in config. file
}
}
?>
然后只需启动新的“应用程序”类。