虽然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、登录网站后台 - 工具 - 清除缓存 - 完工。
当你编辑文章分类后,前台文章就不会出现错误了。