Thinkphp5 实现动态模板主题多个模板切换

在项目开发过程中会遇到一个网站有不同风格,本文详细介绍Thinkphp5 实现模板主题多个模板切换

 

一、在Config中配置view_path模板路径代码如下

 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ‘template‘                => [        // 模板引擎类型 支持 php think 支持扩展        ‘type‘          =>  ‘Think‘ ,        // 模板路径        ‘view_path‘     =>  ‘/template/‘ ,        // 模板后缀        ‘view_suffix‘   =>  ‘html‘ ,        // 模板文件名分隔符        ‘view_depr‘     => DS,        // 模板引擎普通标签开始标记        ‘tpl_begin‘     =>  ‘{‘ ,        // 模板引擎普通标签结束标记        ‘tpl_end‘       =>  ‘}‘ ,        // 标签库标签开始标记        ‘taglib_begin‘  =>  ‘{‘ ,        // 标签库标签结束标记        ‘taglib_end‘    =>  ‘}‘ ,    ],

  

二、所有控制器继承 Base控制器,Base 控制器代码如下:

 

 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class  Base  extends  Controller {        public   function  __construct(Request  $request )      {          if ( $request ->isMobile())          {              config( ‘template.view_path‘ , ‘template/default/mobile/‘ . $request ->module(). "/" );          }          else {              config( ‘template.view_path‘ , ‘template/default/web/‘ . $request ->module(). "/" );          }          parent::__construct( $request );      } }

  

 

PS:必须在构造函数里用config,构造函数过后调用就没用了

 

====================================

以上是全局切换,下面 是自定义切换

====================================

1.无参数调用

 

return $view->fetch();

2.指定操作调用

 

return $view->fetch("index");

3.带控制器

return $view->fetch("demo/index");

4.跨模块调用

 

return $view->fetch("admin@demo/index");

5.全路径模板调用

 

return $view->fetch(APP_PATH.request()->module().‘/view/demo/index.html‘);


采用5,全路径模板调用可解决