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];
改成直接读取数据库的栏目信息记录。这里是调取缓存中的栏目信息的,如果缓存中栏目信息是错误的,这里会照用。
这里就不贴代码了,逻辑思路都提供了。