phpcms v9更新栏目缓存的一处小bug修复方法

2017-01-10 10:06:23来源:oschina作者:雷小达人点击

第七城市

bug的背景:


1、所有栏目内容采取静态页生成;


2、所有栏目采取二级栏目绑定;


3、并非通过后台创建栏目而是直接通过数据库创建栏目记录。


bug的情况:


造成部分栏目页的URL、内容URL更新不正确。不正确的现象是生成二级域名下的下属栏目页时,导航中的栏目地址为二级域名而非二级域名+子栏目英文名。该栏目页中的网页URL也会存在此情况。示例:


栏目A捆绑二级域名 a.xx.com ,栏目A下有子栏目分别是


栏目A1,名称 a1


栏目A2,名称a2


生成栏目A的页面后,栏目A的导航中子栏目的连接都是 a.xx.com 而不是对应的如:


栏目A1,连接 a.xx.com/a1/


栏目A2,连接 a.xx.com/a2/


bug修复方法:


方法1、每个栏目进入设置保存,更新全站缓存、更新栏目缓存(这步更新全站后不需要操作,切不可更新全站缓存前更新栏目缓存);


方法2、打开后台管理文件夹(假定是admin)下的category.php文件,找到以下代码:


/**
* 更新缓存并修复栏目
*/
public function public_cache() {
$this->repair();
$this->cache();
showmessage(L('operation_success'),'?m=admin&c=category&a=init&module=admin&menuid=43');
}

修改为:


/**
* 更新缓存并修复栏目
*/
public function public_cache() {
//先更新数据库记录到栏目缓存
$this->cache();
//执行修复操作
$this->repair();
//再更新修复后的数据记录到缓存中
$this->cache();
showmessage(L('operation_success'),'?m=admin&c=category&a=init&module=admin&menuid=43');
}

覆盖后,更新栏目缓存即可。


方法3,打开content/classes/url.class.php找到



public function category_url



部分,修改其修复栏目URL的代码。把



$r = $this->categorys[$pid];



改成直接读取数据库的栏目信息记录。这里是调取缓存中的栏目信息的,如果缓存中栏目信息是错误的,这里会照用。


这里就不贴代码了,逻辑思路都提供了。


第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台