thinkphp youdian cms 实际操作 增加专题页面 以及行为扩展解释
thinkphp3的访问模式是
http://域名/项目名/分组名/模块名/操作名/其他参数
1我们的模块位于home 我们的action是专题页面
根据thinkphp3.0 5.3定义action的文档
所以第一步我在 App/Lib/Action/Home/目录下增加ZhuantipageAction.class.php
继承自 HomeBaseAction 然后有一个public的方法 demo 访问的时候有
http://localhost/index.php/home/Zhuantipage/demo 就可以了
但是由于我们专题可能就是上html页面,所以不可能每个专题写一个方法。
所以我们新建一个zhuanti方法。在前面 http://域名/项目名/分组名/模块名/操作名/其他参数 的基础上。让专题名成为其他参数
我们在zhuanti方法中通过_GET获取这个参数,然后根据专题名字zhuantiname 调用display显示模板以及内容
如上就调用了display(jiaozheng.html) 显示这个页面。那jiaozheng.html这个页面放在哪里呢?
根据7.1的视图模板定义来说
所以我们的jiaozheng.html应该放在
App/Tpl/Home/Default/Zhuantipage/jiaozheng.html
这样的话。我们就可以通过访问
http://localhost/index.php/home/zhuantiPage/zhuanti/jiaozheng.html
来访问矫正的页面了.注意了这里的html是模板,可以通过内置输出比如{$Title} ----- {$WebName}这样的形式输出php的内容
这些内容是在哪里赋值的呢?( 这里Title和WebName里面的数据实际位于 youdian_config表)
这里还记得我们继承了HomeBaseAction。在HomeBaseAction继承 BaseAction 里面有一个_initialize()函数
$this->_getPublicVar();
$this->_assignPublicVar();
$this->assign('WebName', $GLOBALS['Config']['WEB_NAME']);
$this->assign('Title', $GLOBALS['Config']['TITLE']);
那这个 $GLOBALS['Config']['TITLE']又是哪里来的呢?
这个配置的GLOBALS['Config']['TITLE']应该是来自Config_cn.php里面return的array里面。因为这些arrary都会被放置到GLOBALS变量里面
位于 CheckLangBehavior.class.php run方法里面$this->checkLanguage();
//加载全局用户配置变量
$GLOBALS['Config'] = YdCache::readConfig();
readconfig位于common.php中
static function readConfig($item=false){$file = 'config_'.get_language_mark();$data = F($file);if( empty($data) ){YdCache::writeConfig();$data = F($file);}if( $item !== false ){$data = isset($data[$item]) ? $data[$item] : '';}return $data;}
首先是根据语言检查文件。读取文件。如果这个config_cn.php是空的。那么执行writeconfig 这个就是从数据库中读取数据并且保存为config_cn.php文件
static function writeConfig(){$configFile = 'config_'.get_language_mark();//存储在数据库中的配置项缓存$m = D('Admin/Config');$data = $m->getConfig(); //读取所有配置项数据//Tag标签数据缓存$m = D('Admin/Tag');$data['TAG_LIST'] = $m->getTagField();//频道缓存$m = D('Admin/Channel');$data['CHANNEL_DATA'] = $m->writeCache();//保存为缓存文件F($configFile, $data); return $data;}
最后一个问题就是 CheckLangBehavior.class.php 这个run方法是什么时候被运行的呢?
这个可以参考thinkphp实战记录3里面的内容 其实实在执行tag标签的时候运行的。
我们看到在Core/conf/tags.php里面有个app_begin=>arrary() 里面有"checkLang"
'app_begin'=>array( //因为项目中也可能用到语言行为,最好放在项目开始的地方'CheckLang', //检测语言, 一定放在ReadHtmlCache前,否则会导致静态缓存有问题//'BadIP', //ip过滤'StartWeb', //启动Web'ReadHtmlCache', // 读取静态缓存)
根据描述。就是在调用tag('app_begin')的位置就会按顺序调用CheckLangBehavior.class.php
StartWebBehavior.class.php ReadHtmlCacheBehavior.class.php里面的run方法。
这个是在app.class.php的run方法里调用了 tag('app_begin');
thinkphp youdian cms 实际操作 增加专题页面 以及行为扩展解释相关推荐
- 帝国CMS怎么新增加专题页面 帝国cms增加专题图文详解
帝国CMS的专题功能说明 (一).帝国CMS主要有以下两种用途: 1.将已有栏目下的信息进行再次分类.就像我们在论坛中看到的精华贴子,将精华的内容放到专题,方便用户查看.此类型一般采用列表式. 2.建 ...
- thinkphp youdian cms 实际操作 eq list等解析
参见tp3.0手册8.13 <eq name="name" value="value">相等<else/>不相等</eq> ...
- thinkphp youdian cms 实际操作 常用变量输出
cms首页 头部是 <span>{$T4|ChannelName}</span> 这种模式是 模板引擎中使用函数 表示这里span里面的值是 ChannelName($T4); ...
- youdian cms 数据库以及结构
youdian cms用频道来控制页面层级的归属. 所有的频道都位于youdian_channel表内 每一个频道都有一个频道ID,也有他的父频道.还有haschild表示他是否有子频道. 顶部的导航 ...
- ThinkPHP采用模块和操作
ThinkPHP采用模块和操作的方式来执行,首先,用户的请求会通过入口文件生成一个应用实例,应用控制器(我们称之为核心控制器)会管理整个用户执行的过程,并负责模块的调度和操作的执行,并且在最后销毁该应 ...
- php制作404,利用thinkphp怎么制作一个404跳转页面
利用thinkphp怎么制作一个404跳转页面 发布时间:2020-12-14 15:46:55 来源:亿速云 阅读:97 作者:Leah 本篇文章给大家分享的是有关利用thinkphp怎么制作一个4 ...
- html中dom多会有影响吗,DOM操作造成的页面卡顿问题及解决
相关目录 以下为我总结的其他性能优化点,欢迎参考,指点及吐槽 前言 界面上UI的更改都是通过DOM操作实现的,并不是通过传统的刷新页面实现 的.尽管DOM提供了丰富接口供外部调用,但DOM操作的代价很 ...
- 重构我的CMS系统,增加ORM
重构我的CMS系统,增加ORM Web层,采用WebService + Ajax (支持Web,WAP) Model实体层,略 SystemFramework层,主要是载入配置信息,资源文件等 Com ...
- 专题页面设计,怎么做更符合网站SEO?
通常我们做网站SEO,时间较长之后,网站中势必会出现大量具有相关性的文章,因此我们可能会通过tag标签进行汇集,然而只是利用tag标签来进行文章的简单汇集,又过于简陋,并不是最符合用户体验的方式,因此 ...
最新文章
- python中排序英文单词怎么写_Python实现对文件进行单词划分并去重排序操作示例...
- 玩转Autorun.inf
- 编程判断某个数为素数_【每日编程233期】素数对猜想
- vue实现表格组件,带分页
- Kafka为什么速度那么快?
- ios整理(一)控件
- js高级 — ES6
- python爬取天气数据山东_Python的学习《山东省各城市天气爬取》
- myeclipse中将web项目部署到tomcat里面出错
- Win10系统更新后旧系统清理
- win10相机计算机无法使用,Win10相机打不开 报错“0xa00f4244”要怎么解决?
- java webservice测试_搭建Soap webservice api接口测试案例系统
- 华为freebuds pro和airpods pro降噪对比 华为freebuds pro和airpods pro参数对比
- R语言学习2.1.数值型与字符型
- cnn风格迁移_机器学习:利用卷积神经网络实现图像风格迁移 (一)
- 服务器攻击瘫痪,网站瘫痪,企业如何应对频发
- java label对齐方式_java – 在BorderLayout中对齐JLabel和JTextField
- 判断是pc端还是手机端
- cp symbolic links 引发Too many levels of symbolic links
- Java 获取当前时间戳
热门文章
- maven +jfinal +bettl 整合
- 画一个 “月饼” 陪我过中秋,玩转炫彩 “月饼” 之 基本测试
- Microsoft® Windows® 恶意软件删除工具
- SecureCRT中复制快捷键
- SQL表中存储计算公式,直接执行
- mysql 1061报错_mysql主从 1061 log同步错误处理
- fifs调度算法c语言,《FIFA足球经理》97之终极完全训练法
- 怎样区分硬解机和软解机?
- 题解| 前端面试题分析之美团
- excel 打开时提示是否安装office自定义项