thinkphp youdian cms 实际操作 增加专题页面 以及行为扩展解释

本文详细介绍了如何在ThinkPHP3.0框架中实现专题页面,包括模块与操作的定义、模板路径设置及参数获取,展示了如何通过内置输出在专题页面中使用变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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');

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值