首页 经验方法内容详情

twcms伪静态别名模式,修改文章分类后 对应文章页出错

2023-01-16 巨蚂蚁目录

虽然TWCMS伪静态别名模式不推荐使用,但是有特殊需求的网站,还是会启用,如果在后台编辑文章时,修改了文章所属的分类,那么你就要解决此Bug,否则前台对应页面报错。 具体修改方法:

1、打开\admin\control\article_control.class.php 文件。

2、找到423行-459行,用下面的代码替换掉

3、保存文件,登录网站后台 - 工具 - 清除缓存 - 完工。

//编辑时,别名有三种情况需要处理
if($alias&&$alias_old&&$alias!=$alias_old){//写入新别名
if(!$this->only_alias->set($alias,array('mid'=>$mid,'cid'=>$cid,'id'=>$id))){
E(1,'写入全站唯一别名表出错');
}//删除旧别名
if(!$this->only_alias->delete($alias_old)){
E(1,'删除别名表数据时出错');
}
}elseif($alias&&empty($alias_old)){//写入新别名
if(!$this->only_alias->set($alias,array('mid'=>$mid,'cid'=>$cid,'id'=>$id))){
E(1,'写入全站唯一别名表出错');
}
}elseif(empty($alias)&&$alias_old){//删除旧别名
if(!$this->only_alias->delete($alias_old)){
E(1,'删除别名表数据时出错');
}
}
//如果分类ID发生变化,更新分类内容数
if($cid!=$data['cid']){//旧的分类内容数减1
$categorys_old=$this->category->read($data['cid']);
$categorys_old['count']=max(0,$categorys_old['count']-1);
$this->category->update($categorys_old);//新的分类内容数加1
$categorys['count']++;
$this->category->update($categorys);

//更新别名表新分类【开启伪静态别名模式时】
$dd['alias']=$alias;
$dd['cid']=$cid;
$this->only_alias->update($dd);

$this->category->delete_cache();
}

4、登录网站后台 - 工具 - 清除缓存 - 完工。

当你编辑文章分类后,前台文章就不会出现错误了。