一个小项目,需要配置多套前端主题。解决的思路是根据域名加载不同的主题配置。

一、在应用目录 application 下创建 common 目录。

二、application/common 目录下创建 HomeBase 控制器。代码如下:

<?php
namespace app\common\controller;

use think\Request;

///前端基类控制器
class HomeBase extends CommonBase
{

    public function __construct(Request $request = null)
    {
        ///
        parent::__construct($request);

        ///获取当前域名
        $domain = request()->domain() ?? '';
        $domain = substr($domain,strrpos($domain,'://')+3);

        ///设置前端当前使用主题
        $this->view->config('view_path',config('template')[$domain] ?? './template/default/');
    }
}

三、前端代码的 controller 都继承 HomeBase 基类即可。

四、主题配置文件 template.php 的文件内容如下:

<?php 

 return array (
  'bailoo.xin' => './template/otd/',
  'def.bailoo.xin' => './template/default/'
);

静态化的方案基本已经ok,可以测试一下了。

================= 我是邪恶的分割线 =================

如果想修改成后台可以动态修改的,

可以将目前已有的几套主题{./template/otd/、./template/default/} 放到配置表中,

后台操作声明关联关系,通过关联关系表内的数据动态重置模板配置文件。

核心代码如下:

    ///重置模板配置文件
    public function resetTemplateFile(){
        $template_config_path = CONF_PATH.'/extra/template.php';
        if(!file_exists($template_config_path)){throw new \Exception('请检查模板配置文件');}
        file_put_contents($template_config_path,"<?php ".PHP_EOL.PHP_EOL." return ".var_export(collection($this->where(['node_url'=>['neq',''],'use_template_path'=>['neq','']])->column('node_url,use_template_path'))->toArray(),true).';');
    }

简单暴力的TP5多主题方案的更多相关文章

  1. PHP搭建简单暴力的mvc

    对于一个web系统来说,我们使用mvc很必要, 给我们带来的是清晰的结构,易运维,易扩展, mvc 我对其的理解应该叫mxvc, 多了一个x , 这个x代表什么,x可以理解为 relay,proxy, ...

  2. $NOIP2018$ 暴踩全场计划实施方案

    \(NOIP2018\) 暴踩全场计划实施方案 改完题辣!该更博辣!(这么激动干嘛反正又没人看) 我要取一个霸气的名字.于是就这样了.原本打算是暴踩yyb计划实施方案的(来啊互相伤害啊) 信心流选手就 ...

  3. KVC/KVO之暴力的KVC

    本章将分为三个部分: KVC是什么 KVC之Set/Get KVC键值路径之Set/Get KVC是什么 KVC,即 NSKeyValueCoding,一个非正式的 Protocol,提供一种机制来间 ...

  4. ICCV2021 | 简单有效的长尾视觉识别新方案:蒸馏自监督(SSD)

    ​  前言  本文提出了一种概念上简单但特别有效的长尾视觉识别的多阶段训练方案,称为蒸馏自监督(Self Supervision to Distillation, SSD).在三个长尾识别基准:Ima ...

  5. Android 学习笔记之 个人认为最简单的查看Android源码方案

    相信很多人都会疑惑如何使用Eclipse ADT查看源码? 下面我们将介绍 如何查看Android源码. 本文有如下优点: 1.不用费心去找Android源码地址:一个字烦,网上的东西杂七杂八的... ...

  6. DS控件库 一个简单的血条颜色渐变方案

    Private Sub DS按钮1_ButtonClick(Sender As Object) Handles DS按钮1.ButtonClick Dim T As New Threading.Thr ...

  7. 两个简单的API限流实现方案

    1, Ngnix限流 Nginx在架构中起到请求转发与负载均衡器的作用.外部req首先到Nginx监听的80端口,然后Nginx将req交给到监听8080端口的APP服务器处理.处理结果再经由Ngin ...

  8. mac上完整卸载删除.简单粗暴无脑:androidstudio删除方案

    如果你是mac  ,你删除as ,删不干净也正常,你会发现安装的时候,前面的东西也在.配置文件在,会导致你以前的错误不想要的东西都在. 废话不多说,复制粘贴就是干!!!!~~~~~~~~ 第一步: 复 ...

  9. 正则效验url

    上篇文章讲到多主题的解决方案:简单暴力的TP5多主题方案 为了简化配置,所以将域名前的协议 http/https 截取了. 后台配置时就需要效验配置的格式是否正确,需要用到的正则代码如下: /*** ...

随机推荐

  1. DB2报“数据库日志已满”问题解决

    用控制中心直接改会比较容易一点,在数据库名称上点右键-->配置-->日志-->日志文件大小.主日志文件数.辅助日志文件数改大一点. 也可用命令行db2cmd db2 update d ...

  2. eclipse搭建golang for windows

    用惯了eclipse,所以.... golang windows开发环境 参考文档:http://golang.org/doc/install 1.下载go安装包http://code.google. ...

  3. sql调优《二》

    1.数据库设计(是否复合范式,是否合理归档.分区.分表等) 2.硬件基础架构 (设备规格,硬件性能,负载均衡,容灾等) 3.ql语句的写法.索引和统计信息,事务和锁,应用程序访问代码(连接过多.频繁开 ...

  4. Data type-数据类型

    操作方式.含义.存储方式. In computer science and computer programming, a data type or simply type is a classifi ...

  5. Django中ORM之操作表记录

    添加表记录 添加普通字段 #方法一 book_obj = Book(title='book7',publishDate='2011-05-02',price=200,publish_id=1) boo ...

  6. css——应用多个样式

    应用多个样式 在class中使用多个样式 在这是会有优先级关系问题 在上面的代码中,aa,bb,中的颜色会有冲突,到底显示的结果会是黄色还是绿色呢? 结果是绿色的.它是以程序执行的先后为优先级,后执行 ...

  7. IOS - autoresizingMask

    提醒:当frame设定死,慎用autoresizingMask:否则该frame变形的难以想象.

  8. 加减法计算器-java

    由于经常进行较大数据的加减法计算,好多计算器都是转换成科学技术法的,所以自己用java写了一个 功能如下: 1,可以输入多个带千位分隔符的数字,进行加减法计算 2,结果展示带千位分隔符 3,结果展示不 ...

  9. BZOJ 4016 [FJOI2014]最短路径树问题 (贪心+点分治)

    题目大意:略 传送门 硬是把两个题拼到了一起= = $dijkstra$搜出单源最短路,然后$dfs$建树,如果$dis_{v}=dis_{u}+e.val$,说明这条边在最短路图内,然后像$NOIP ...

  10. myeclipse的git插件安装

    首先需要一个myeclies的Git插件EGit 点击下载5.0.1 官方网站