Smarty:设置目录

时间:2012-08-14 02:22:58

标签: php templates smarty

我对此并不十分肯定,但是从巧妙的说明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/');

这是对的吗?你们做过任何“快捷方式”以避免这种情况吗?

2 个答案:

答案 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
    }
}
?>

然后只需启动新的“应用程序”类。