简单暴力的TP5多主题方案

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

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

domain() ?? '';
        $domain = substr($domain,strrpos($domain,'://')+3);


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


三、前端代码的 controller 都继承 HomeBase 基类即可。
四、主题配置文件 template.php 的文件内容如下:

 './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,"where(['node_url'=>['neq',''],'use_template_path'=>['neq','']])->column('node_url,use_template_path'))->toArray(),true).';');
    }

转载于:https://www.cnblogs.com/xianhenyuan/p/11085250.html

你可能感兴趣的:(简单暴力的TP5多主题方案)