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("[email protected]/index");

5.全路径模板调用

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

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

原文地址:https://www.cnblogs.com/apolloren/p/12070944.html

时间: 2024-08-11 12:13:58

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

Thinkphp学习笔记-模板主题

一个模块如果需要支持多套模板文件的话,就可以使用模板主题功能. 默认情况下,没有开启模板主题功能,如果需要开启,设置 DEFAULT_THEME 参数即可: // 设置默认的模板主题 'DEFAULT_THEME' => 'default' 采用模板主题后,需要在视图目录下面创建对应的主题目录,和不启用模板主题的情况相比,模板文件只是多了一层目录: View/User/add.html // 没有启用模板主题之前 View/default/User/add.html // 启用模板主题之后 在视

thinkphp 模板主题

一个模块如果需要支持多套模板文件的话,就可以使用模板主题功能. 默认情况下,没有开启模板主题功能,如果需要开启,设置 DEFAULT_THEME 参数即可: 大理石平台精度等级 // 设置默认的模板主题 'DEFAULT_THEME' => 'default' 采用模板主题后,需要在视图目录下面创建对应的主题目录,和不启用模板主题的情况相比,模板文件只是多了一层目录: View/User/add.html // 没有启用模板主题之前 View/default/User/add.html // 启

模板类与类模板、函数模板与模板函数等的区别

在C++中有好几个这样的术语,但是我们很多时候用的并不正确,几乎是互相替换混淆使用.下面我想彻底辨清几个术语,这样就可以避免很多概念上的混淆和使用上的错误.这几个词是: 函数指针——指针函数 数组指针——指针数组 类模板——模板类 函数模板——模板函数 最终在使用中,我们就可以让它们实至名归,名正言顺. 1.函数指针——指针函数   函数指针的重点是指针.表示的是一个指针,它指向的是一个函数,例子: int   (*pf)(); 指针函数的重点是函数.表示的是一个函数,它的返回值是指针.例子:

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

| — template — default   系统内置风格模板(默认风格)| — template — default  – discuz_style_default.xml  风格安装文件,可用风格导出功能创建| — template — default  – preview.jpg  预览图| — template — default  – common 风格中的公共包含文件,内含css.htm模板文件| — template — default  – common  –  block_

thinkphp 网站模板 电脑端手机端切换代码

ThinkPHP的模板主题机制,如果只是在PC,只要需修改 DEFAULT_THEME (新版模板主题默认是空,表示不启用模板主题功能)配置项就可以方便的实现多模板主题切换. 但对于移动端和PC端,也许你会设计完全不同的主题风格,且针对不同的来路提供不同的渲染方式,其中一种比较流行的方法是“响应式设计”,但就本人经历而言,要实现完全的“响应式设计”并不是那么容易,且解决兼容问题也是个难题,假设是大型站点,比如:淘宝.百度.拍拍这些,响应式设计肯定是满足不了需求的,而是需要针对手机访问用户提供单独

模板引擎artTemplate及模板预编译器TmodJS的使用入门

一.为什么要使用前端模板? 主要为了解决UI层与业务逻辑的纠缠不清.比如我们需要根据后端返回的数据动态生成一个表格或者类似表格的DOM(比如ul > li等)时,按照传统的方式,需要我们先获取数据,然后在页面的js中通过遍历数据.提取相关数值以及动态拼接html字串的方式,生成最终的DOM.这样就产生了UI与业务逻辑的纠缠.如果只是偶尔或者局部使用可能问题不明显,但如果代码量庞大.业务或数据十分复杂的情况下,这种方式产生的代码会十分不利于后期维护,这想必是每一个开发人员都不愿看到的.因此,便产生

模板与泛型编程——定义模板

一.定义模板 1.函数模板 模板定义以关键字template开始,后跟一个模板参数列表,这是一个逗号分隔的一个或多个模板参数的列表,用<>括起来.在模板定义中,模板参数列表不能为空.模板参数表示在类或函数定义中用到的类型或值.当使用模板时,我们(隐式地或显式地)指定模板实参,将其绑定到模板参数上. 1 #include <iostream> 2 #include <string> 3 #include <vector> 4 #include <algo

flask模板的基本用法、模板语法、渲染模板、模板辅助工具

flask模板 在动态web程序中,视图函数返回的HTML数据往往需要根据相应的变量(比如查询参数)动态生成. 当HTML代码保存到单独的文件中时,我们没法再使用字符串格式化或拼接字符串的当时在HTML代码中插入变量,这时我们需要使用模板引擎(template engine).借助模板引擎,我们可以再HTML文件中使用特殊的语法来标记变量,这类包含固定内容和动态部分的可重用文件称为模板(template). 模板引擎的作用就是读取并执行模板中的特殊语法标记,并根据传入的数据将变量替换为实际值,输

模板类的约束模板友元函数:template friend functions

本来这篇博客是不打算写的,内容不是很难,对于我自己来讲,更多的是为了突出细节. 所谓template friend functions,就是使友元函数本身成为模板.基本步骤:1,在类定义的前面声明每个模板函数.eg:template <typename T> void counts(); template <typename T> void report<>(T &);2,在类声明中再次将模板声明为友元. template <typename TT>