在项目开发过程中会遇到一个网站有不同风格,本文详细介绍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,全路径模板调用可解决

Thinkphp5 实现动态模板主题多个模板切换的更多相关文章

  1. Thinkphp学习笔记-模板主题

    一个模块如果需要支持多套模板文件的话,就可以使用模板主题功能. 默认情况下,没有开启模板主题功能,如果需要开启,设置 DEFAULT_THEME 参数即可: // 设置默认的模板主题 'DEFAULT ...

  2. thinkphp 模板主题

    一个模块如果需要支持多套模板文件的话,就可以使用模板主题功能. 默认情况下,没有开启模板主题功能,如果需要开启,设置 DEFAULT_THEME 参数即可: 大理石平台精度等级 // 设置默认的模板主 ...

  3. 纸壳CMS主题增强,支持主题中加入模板

    背景 在之前,纸壳CMS的主题仅仅只是CSS样式,并不支持在主题下使用模板来构建不同的HTML结构.现在我们对主题功能做了增强,可以在主题下添加各自的模板,这样在制作主题时,就会更加自由.不仅如此,新 ...

  4. ThinkPHP示例:模板主题

    ThinkPHP示例之模板主题,模板主题可以对相同的控制器输出进行不同的布局和样式调整.首先需要下载框架核心,然后把示例解压到Web根目录下面,并修改入口文件中的框架入口文件的位置.访问 http:/ ...

  5. DevExpress XtraReport - 动态加载报表布局模板

    XtraReport的报表模板文件是.repx,下面的代码演示动态加载报表布局模板. XtraReport mReport = new XtraReport(); mReport.LoadLayout ...

  6. discuz默认模板文件结构详解-模板文件夹介绍

    | — template — default   系统内置风格模板(默认风格)| — template — default  – discuz_style_default.xml  风格安装文件,可用 ...

  7. flask模板结构组织(局部模板、宏、模板继承)

    模板结构组织 除了使用函数.过滤器等工具控制模板的输出外,jinja2还提供了一些工具来在宏观上组织模板内容. 局部模板 在Web程序中,我们通常会为每一类页面编写一个独立的模板.比如主页模板.用户资 ...

  8. flask模板的基本用法(定界符、模板语法、渲染模板),模板辅助工具(上下文、全局对象、过滤器、测试器、模板环境对象)

    flask模板 在动态web程序中,视图函数返回的HTML数据往往需要根据相应的变量(比如查询参数)动态生成. 当HTML代码保存到单独的文件中时,我们没法再使用字符串格式化或拼接字符串的当时在HTM ...

  9. Handlebars的基本用法 Handlebars.js使用介绍 http://handlebarsjs.com/ Handlebars.js 模板引擎 javascript/jquery模板引擎——Handlebars初体验 handlebars.js 入门(1) 作为一名前端的你,必须掌握的模板引擎:Handlebars 前端数据模板handlebars与jquery整

    Handlebars的基本用法 使用Handlebars,你可以轻松创建语义化模板,Mustache模板和Handlebars是兼容的,所以你可以将Mustache导入Handlebars以使用 Ha ...

随机推荐

  1. linux定时任务crontab怎样执行root命令

    在/var/spool/cron/文件夹下放置了所有定时任务文件, 1.运行crontab -u $用户名 -e会显示$用户的所有定时任务: 2.运行sudo crontab -e会显示root用户所 ...

  2. go语言每个工程是不是都要单独设置GOPATH?

      go语言每个工程是不是都要单独设置GOPATH?比如我的go项目都统一管理在d:/workspace/go_work/目录下面,该目录下有3个项目project_01,project_02,pro ...

  3. 逆向破解之160个CrackMe —— 015

    CrackMe —— 015 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

  4. python测试开发django-67.templates模板变量取值

    前言 django 的模板里面变量取值是通过句点语法来取值,就是一个点(.)符号.取值的对象也可以是字符串,int类型,list列表,字典键值对,也可以是一个类的实例对象. views视图 比如我在 ...

  5. python正则表达式(4)--search方法

    1.re.search函数 re.search 扫描整个字符串并返回第一个成功的匹配,如果匹配失败search()就返回None. (1)函数语法: re.search(pattern, string ...

  6. ansible(二)

    软件相关模块 yum rpm和yum的区别 rpm:redhat package manager yum可以解决依赖关系 yum源配置 [epel] name=Extra Packages - $ba ...

  7. linux系统时区问题

    1. centos 7 转载自:https://www.cnblogs.com/zhangeamon/p/5500744.html 查看时区: timedatectl $timedatectl sta ...

  8. SpringBoot——经典的Hello World【二】

    前言 来创建个hello world 呗 步骤 首先肯定是要打开我们的IDEA来创建一个Maven的项目哈 创建项目 1. File->New->Project 2.Maven->J ...

  9. Linux下用ls和du命令查看文件以及文件夹大小(转)

    转自:https://www.cnblogs.com/xueqiuqiu/p/7635722.html ls的用法 ls -l |grep "^-"|wc -l或find ./co ...

  10. NSSting NSData 与字符集合

    NSString 是为了人类阅读而存在的,必须进行编码,以使得bytes对人类有意义 String Objects An NSString object encodes a Unicode-compl ...