侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

帝国CMS删除信息不同步删除TAG数据修复

2022-05-31 星期二 / 0 评论 / 0 点赞 / 187 阅读 / 2560 字

我们在使用帝国CMS增加TAG时,系统会将TAG信息分别存储到3个表,分别为信息副表(phome_ecms_XXX_data_1)的infotags字段(6.6版本是存储在主表里的),TAGS表(phome_enewstags),TAGS信息表(phome_enewstagsdata),当我们在删除信息的时候,TAGS信息表的信息记录并不会被删除。直到你把TAGS表里的TAG删除以后,才会把TAGS信息表关联的信息删除掉。

前言

我们在使用帝国CMS增加TAG时,系统会将TAG信息分别存储到3个表,分别为信息副表(phome_ecms_XXX_data_1)的infotags字段(6.6版本是存储在主表里的),TAGS表(phome_enewstags),TAGS信息表(phome_enewstagsdata),当我们在删除信息的时候,TAGS信息表的信息记录并不会被删除。直到你把TAGS表里的TAG删除以后,才会把TAGS信息表关联的信息删除掉。


上图是信息关系图

影响

这算是个BUG吧。如果主信息都删除了,TAGS信息表再存在的话,1是没有意义,2是会造成在前端列举某个TAG的时候分页错误(比如关联某个TAG实际数据有20条,但是从TAGS信息表里记录的是28条数据,如果你按每页10条,是要分3页的,当用户翻页到第3页的时候,是不会显示任何数据的)。

修复

修复这个问题其实很简单,操作方法为:打开 e/class/functions.php 约 1266行,快速搜索“//删除信息相关记录”在删除其他表记录的下一行添加如下代码:
$empire->query("delete from {$dbtbpre}enewstagsdata where id='$id' and classid='$classid'");

截图如下:红框就是添加的代码

扩展

完成了以上操作,你会发现还有个小问题,就是信息删除了,tag列表里的信息数量并没有跟着减少,该怎么办了?这里给出了完美的解决方案,你可以把附件下载解压到你的网站 /e/admin/tags/目录下(如果你的TAGS进行过二次开发,不建议你覆盖)。附件文件只是添加了两个方法:

1、sZlTags 该方法主要负责清理tag信息表中不存在的信息

2、sZlTagsNum 该方法主要重新计算tag的数据总和


附件多出的两个功能按钮,大家可以根据需要操作

下载地址1

广告 广告

评论区