TypechoJoeTheme

轩宇网

让ThinkPHP5支持模板主题(参照ThinkPHP3.2)


请参考tpadmin文档http://www.kancloud.cn/yuan1994/tpadmin/220597
tpadmin完美支持主题设置与切换,github仓库:https://github.com/yuan1994/tpadmin/
使用方法
在控制器里模板输出时加上theme方法:

//继承\think\Controller控制器时
return $this->theme('blue')->fetch(); 
//或者
$this->theme('blue')->display();  

//没有继承\think\Controller控制器时
$view = \think\View();
return $view->theme('blue')->fetch();
//或者
$view->theme('blue')->display();  
//全局设置默认模板主题
//在config.php配置文件里加上
'template'  => [
    //默认主题
    'default_theme' => 'blue'
],

主题为空时表示不使用主题,不使用主题时view模板文件路径和以前一样,例如AdminGroup的模板文件在view/admin_group/,使用blue主题时,模板文件在view/blue/admin_group/,使用red主题时,模板文件在view/red/admin_group/*
官方代码修改
thinkphp/library/think/Controller.php 第147行:

    /**
     * 设置模板主题     
     * @access protected
     * @param string $theme
     * @return $this
     */
    protected function theme($theme = ''){
        $this->view->theme($theme);
        return $this;
    }

thinkphp/library/think/View.php 第171行:

    /**
     * 设置模板主题   
     * @access public
     * @param string $theme 主题名称
     * @return $this
     */
    public function theme($theme = ''){
        $this->config('default_theme',$theme);
        return $this;
    }

thinkphp/library/think/view/driver/Think.php 第35行和第131行:(如果使用其他模板引擎驱动,请参照该文件修改)

//第35行
'default_theme' => '',
//第131行:
if ($this->config['default_theme']){
    $template = $this->config['default_theme'] . DS . $template;
}

注意
文件修改可能会导致错位,请使用tpadmin管理后台提供的源码

本文转载自http://www.thinkphp.cn/code/2413.html

赞(0)