thinkcmf5 模板版变量的加载过程 和 新增网站配置项怎么全局使用

news/2024/5/20 3:09:29/文章来源:https://blog.csdn.net/weixin_30244889/article/details/98786745

1、模板全局配置是怎么加载的

在 HomeBaseController.php 的 fech方法

$more     = $this->getThemeFileMore($template);

用 

echo ThemeModel::getLastSql(); 输出sql语句  :SELECT `more` FROM `cmf_theme_file` WHERE `theme` = 'w0s' AND ( `is_public` = 1 OR `file` = 'portal/index' )  获取了声明公共配置和当前模板文件的模板配置。

可见,不管当前theme下那个模板文件配置,只要is_public=1,就可以加载vars 和 widgets 。 全局配置里的变量和控件就是这样加载的。。。。。

getThemeFileMore函数源码:

/*** 获取模板文件变量* @param string $file* @param string $theme* @return array*/private function getThemeFileMore($file, $theme = ""){//TODO 增加缓存$theme = empty($theme) ? cmf_get_current_theme() : $theme;// 调试模式下自动更新模板if (APP_DEBUG) {$themeModel = new ThemeModel();$themeModel->updateTheme($theme);}$themePath = config('cmf_theme_path');$file      = str_replace('\\', '/', $file);$file      = str_replace('//', '/', $file);$file      = str_replace(['.html', '.php', $themePath . $theme . "/"], '', $file);$files = Db::name('theme_file')->field('more')->where(['theme' => $theme])->where(function ($query) use ($file) {$query->where(['is_public' => 1])->whereOr(['file' => $file]);})->select();echo ThemeModel::getLastSql();$vars    = [];$widgets = [];foreach ($files as $file) {$oldMore = json_decode($file['more'], true);if (!empty($oldMore['vars'])) {foreach ($oldMore['vars'] as $varName => $var) {$vars[$varName] = $var['value'];}}if (!empty($oldMore['widgets'])) {foreach ($oldMore['widgets'] as $widgetName => $widget) {$widgetVars = [];if (!empty($widget['vars'])) {foreach ($widget['vars'] as $varName => $var) {$widgetVars[$varName] = $var['value'];}}$widget['vars']       = $widgetVars;$widgets[$widgetName] = $widget;}}}return ['vars' => $vars, 'widgets' => $widgets];}
View Code
 

2、新增网站配置项怎么全局使用

目前cmf5的后台配置并没有网站设置里并没有包含:公司名称,地址,电话,手机,在线客服等公司信息,两种方式可以实现这些配置项:

一是在声明了is_public=1的模板里增加模板变量(例如:config.json,head模板,foot模板)。 优点:无需修改源程序,升级不用担心覆盖,缺点:这些信息属于网站信息,应该独立于模板之外,否则换模板的话还需要重新设置。

 二是在后台网站设置里增加新的配置项目。无须担心换模板,需要修改控制器基类,升级就会被覆盖,每次升级都需要修改一下。

这里使用第二种方法

app\admin\controller 新增ComSettingController.php

namespace app\admin\controller;use cmf\controller\AdminBaseController;
use think\Validate;class ComSettingController extends AdminBaseController
{/*** 公司信息配置* @adminMenu(*     'name'   => '公司信息配置',*     'parent' => 'admin/Setting/default',*     'display'=> true,*     'hasView'=> true,*     'order'  => 10,*     'icon'   => '',*     'remark' => '公司信息配置',*     'param'  => ''* )*/public function index(){$comSetting = cmf_get_option('com_setting');$this->assign($comSetting);return $this->fetch();}/*** 公司信息配置* @adminMenu(*     'name'   => '公司信息配置提交保存',*     'parent' => 'index',*     'display'=> false,*     'hasView'=> false,*     'order'  => 10000,*     'icon'   => '',*     'remark' => '公司信息配置提交保存',*     'param'  => ''* )*/public function indexPost(){$post = array_map('trim', $this->request->param());//这里判断数据有效
cmf_set_option('com_setting', $post);$this->success("保存成功!");}}
View Code

 

后台菜单增加对应菜单

这样就新增了 com_setting配置项

怎么使用???

(1)在对应controller里增加 例如:indexController,只能在当前模板使用

         $comSetting = cmf_get_option('com_setting');
         $this->assign(‘com_info’.$comSetting);

         这样就可以在模板index.html  使用 com_info.company 来显示公司名称

(2)要想全局使用,需要加到controller的基类 HomeBaseController里,在simplewind\cmf\controller目录下

        

 public function _initialize(){// 监听home_inithook('home_init');parent::_initialize();$siteInfo = cmf_get_site_info();View::share('site_info', $siteInfo);$comSetting = cmf_get_option('com_setting');View::share('com_info', $comSetting);}

        这样就可以在任何模板里使用  com_info.company 

 

转载于:https://www.cnblogs.com/djiz/p/7587509.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_733693.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

esc服务器网站程序安装,esc服务器安装ssl

esc服务器安装ssl 内容精选换一换SSL证书签发后,即可下载并安装在Tomcat、Nginx、Apache、IIS等服务器上。具体操作请参见:在Tomcat上安装SSL证书:详细指导操作请参见在Tomcat服务器上安装SSL证书。在Nginx上安装SSL证书:详细指导…

Web网站的测试流程和方法(一)

近期,Alltesting的众测平台  有不少web网站的功能测试项目,像:  农事GERP种植系统 云测试平台 头号专家网项目第三轮功能测试 于是,有些新加入众测平台的小伙伴们就很捉急:  “web网站怎么测试?”  …

《大型网站性能优化指南——从前端、网络、CDN到后端、大促的全链路性能优化详解》读后感和一点思考

前言:这几天拜读了阿里的这本书,这本书全栈式地讲了一个成熟稳定的大型高并发高容量系统的优化过程,读下来很有收获,也有一些自己的思考。CDN-DNS、网络部分讲的挺精彩的,值得一读的一本书。由于我是后端方向&#xff…

网站用户行为分析项目之会话切割(一)

文章目录0x00 教程内容0x01 项目分析1. 项目背景2. 学习收获3. 数据源介绍4. 项目总体流程5. 最终数据结构0x02 编程实现1. 构建Maven项目2. 编码前准备工作3. 实现源数据的获取4. 解析日志源数据5. 日志清洗操作0x03 思路回顾0xFF 总结0x00 教程内容 项目分析编程实现 基础知…

网站正在建设中_兰州网站建设中常见的布局种类有什么

网站是由网页构成,这点许多从事网站建设或者是接触过网站开发的应该都比较清楚,目前虽然许多的企业都想要建设网站,但是对于网站的布局了解并不清楚,下面随小编一起来了解一下兰州网站建设中几种常见的布局吧。1、区块型为了网站优…

做服务端用Java还是PHP_建站用php还是java

建站用php还是java?建站用php,因为php是常用的网站编程语言,有全球超过81.7%的公共网站在服务器端采用PHP。而Java是一门面向对象编程语言,更适于系统程序的开发。phpPHP即“超文本预处理器”,是一种通用开源脚本语言。…

百度爬虫爬到虚拟链接 网站被黑_什么是爬虫?如何提高爬虫爬取网页速度?...

什么是爬虫?网络爬虫也叫网络机器人和网络蜘蛛,它可以代替人工按照一定的规则自动地的在互联网中进行数据采集与整理。各大搜索引擎也都有各自的名字,如百度蜘蛛:BaiduSpider,谷歌蜘蛛:Googlebot&#xff0…

jmeter怎么监控网站服务器,Jmeter监控服务器资源

1. 前言之前用Jmeter做性能测试时总是通过其他工具来监控服务器资源,通过查找资料,发现Jmeter自带的监控工具能监控tomcat,这种情况只能监控Tomcat支持的资源使用部分,完全是不够用的,于是发现有第三方插件支持Jmeter监…

91pay.php,电商网站使用支付宝转账付款功能代替支付宝支付接口

现在支付宝商户对于商家接入支付宝即时到账接口管理比较严格,一般都是需要支付宝企业账户才能申请开通即时到账接口的。这对于大部分个人商家来说,无疑不利于快速回笼资金。本接口通过一个变通的方式,利用支付宝系统中的转账付款功能&#xf…

建站难?史上最全指南 — 教你使用WordPress搭建出属于自己的站点!

文章目录引言购买服务器购买域名解析域名部署WordPress安装nginx服务器安装PHP运行环境新建个人站点下载并安装WordPress安装主题网站备案SSL证书(HTTPS)页面伪静态网站类型选择结语引言 很多朋友都想拥有自己的个人网站,但事实如果自己从头搭…

网站中文乱码?三招解决

发布网站后&#xff0c;不少小伙伴都会碰到中文乱码问题。 碰到这种问题不用慌&#xff0c;三招就可以解决&#xff1a; 第一招&#xff1a;设置好页面的编码&#xff0c;建议用utf-8编码格式&#xff0c;一招鲜&#xff0c;吃天下。 <meta http-equiv"Content-Type&qu…

网站开发知识结构

网站开发知识结构 https://github.com/TeamStuQ/skill-map https://blog.csdn.net/fenglailea/article/details/52609188 转载于:https://www.cnblogs.com/iamspecialone/p/11203256.html

ctfhub——网站源码python脚本解法

1.打开题目页面如下&#xff1a; 2.编写脚本之前&#xff0c;先学习一下python request模块中正常访问页面代码怎么写 import requests url "http://42.192.212.170/" r requests.get(url) print (r,r.status_code,end" ") 输出结果&#xff1a; 3.下…

python爬虫——获取网站中的特定块元素内容(二)

一、实现的目标 目标&#xff1a;获取如图所示网站中块元素的内容 二、代码编写 import requests #导入request模块 import re #导入re模块 url "https://www.baidu.com/" #等会要爬的url地址 header {User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:9…

python爬虫——获取网站中的特定块元素内容(一)

一、实现的目标 目标&#xff1a;获取如图所示网站中所标的元素内容 二、代码编写 import requests import re import json url "https://open.weibo.com/" header {User-Agent:ozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0…

wordpress 搭建的博客: 增加网站备案信息

问题描述 使用阿里云的主机&#xff0c;搭建了一个基于wordpress的博客&#xff0c;因为注册的域名是.com&#xff0c;需要网站开启后&#xff0c;增加网站备案的信息搭建好 wordpress 博客后&#xff0c;发现没有地方配置【网站备案信息】 主题 我使用的是 wordpress 的一个…

图片优化_网站图片SEO优化应该怎么做

作为一名SEOer人员一定要学会图片SEO优化&#xff0c;现在百度对图片优化这块相当的看重&#xff0c;并且会抓取并收录图片&#xff0c;最直接的表现就是搜索某一个关键词点击【图片】的时候能看见一大堆的相关图片&#xff0c;由此可见搜索引擎对图片识别能力已经越来越强了&a…

效果图网站、外包平台接单平台有哪些?

作为一名设计师或画图员&#xff0c;设计方案、画图、收集素材、接单、学习充电等&#xff0c;都有哪些网站可以用到呢&#xff1f;下面我就整理了一下。 综合设计类网站 国外室内设计网站 https://www.houzz.com/ 国外优秀设计作品网站 https://www.behance.net/ 国外室内设计…

自定义表单提交筛选分页怎么做_如何优化网站的筛选页面?

网站设计的重要目标之一就是做好清晰的导航系统&#xff0c;这不论是对网站的信息结构、还是用户体验&#xff0c;都有着重要的影响。这也是网站SEO优化工作中需要考虑的重要因素之一。在导航系统当中&#xff0c;通过不同筛选条件组成不同网站页面的&#xff0c;就是分页导航&…

类似纪念碑谷的unity2d素材包_短视频文案怎么写吸引人?短视频文案素材网站有哪些?(纯干货)...

你会写短视频文案吗&#xff1f;有没有被那几十个字绞尽脑汁&#xff1f;你知道短视频文案怎么写吸引人吗&#xff1f;你是不是看了很多短视频文案怎么写吸引人的文章还是仍然不会写?.....你是不是也正在为这些问题愁眉不展&#xff1f;今天这篇文章就来说说短视频文案怎么写吸…