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

 虽然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、登录网站后台 - 工具 - 清除缓存 - 完工。 

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


© 版权声明
THE END