用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3027|回复: 1
收起左侧

[讨论/交流] 用CI实现多模板配置

[复制链接]
发表于 2012-6-29 17:54:37 | 显示全部楼层 |阅读模式
由于系统开发 经常会用到多套模板,所以扩展了CI的核心类,不知道是否正确,是否会影响效率
1 在appliction/config/
添加system.php
$config['fw_template'] = 'default';
2 在appliction/config/autoload.php
//自动加载
$autoload['config'] = array('system');
3 在appliction/core/添加
FW_Controller.php
代码为
class FW_Controller extends CI_Controller {

    function __construct()
    {
           
        parent::__construct();
        define('FW_TEMPLATE', $this->config->item('fw_template'));
            

    }

}

定义了默认模板

4 在appliction/core/添加
FW_Loader.php
重写view方法
class FW_Loader extends CI_Loader{
        public function view($view, $vars = array(), $return = FALSE)
        {
                //$view=$this->config->item('template').'/'.$view;
                if(defined('FW_TEMPLATE')){
                        $view=FW_TEMPLATE.'/'.$view;
                }
                return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));
        }
}


这样在控制器中,就不用写模板路径,
//$this->load->view('default/news_view',$var);//用默认的CI_Controller
$this->load->view('news_view',$var); //用FW_Controller

可以实现 我的目的,不知道这样是否正确,求教


发表于 2012-8-27 16:53:23 | 显示全部楼层
楼主的方法测试后没成功我也想要 一个这种方法

本版积分规则