dede评论数怎么算出来的

99ANYc3cd6
预计阅读时长 11 分钟
位置: 首页 DEDE建站 正文

基于数据库关联查询

DedeCMS 的评论数并不是一个独立存储的字段,而是通过实时查询数据库中对应内容的评论表,然后计算评论条数得出的

当你打开一篇文章页面时,DedeCMS 会执行类似这样的 SQL 查询:

SELECT COUNT(*) FROM `dede_feedback` WHERE `aid` = '文章的ID号'
  • dede_feedback:这是 DedeCMS 默认的评论数据表,表名可能根据你的安装有所变化。
  • aid:这个字段是文章的唯一标识,它关联到主表 dede_archivesid 字段。
  • COUNT(*):这是一个聚合函数,用于计算满足条件的记录总数。

这个查询的结果就是文章的评论数,并将其显示在页面上。


评论数计算的具体流程

  1. 用户访问文章页面:用户点击一篇文章,article.php?id=123
  2. PHP 脚本处理article.php 脚本开始执行,它会获取文章的 ID(这里是 123)。
  3. 调用标签:在文章的模板文件(通常是 article_article.htm)中,有一个专门用于显示评论数的标签,通常是:
    {dede:field.id function="GetTotalVote(@me)"/}

    或者更常见的:

    [field:ID function="GetTotalArcVote(@me)"/]

    注意:这里的函数名 GetTotalVoteGetTotalArcVote 可能会让你误解,但它实际上是用来获取评论数的(在早期版本中,这个函数也用于获取投票数,功能被合并了)。

  4. 执行函数查询数据库:当模板引擎解析到这个标签时,会调用 include/helpers/extend.helper.php 文件中的 GetTotalVote 函数,这个函数内部会执行上面提到的 SQL 查询,传入文章的 ID。
  5. 返回结果并显示:函数从数据库获取到评论的总数(5),然后把这个数字替换掉模板中的标签,最终渲染到 HTML 页面上,用户就能看到 "评论(5)"。

为什么评论数会显示不正确?(常见问题及解决方法)

了解了原理后,很多问题就迎刃而解了,评论数显示不正确通常由以下几个原因造成:

数据库问题

  • 原因dede_feedback 表中的评论记录存在,但可能因为某些原因(如导入数据、误操作)导致 aid 字段为空或指向了错误的 ID。
  • 排查
    1. 登录你的网站后台,进入“系统” -> “SQL命令行工具”。
    2. 执行以下 SQL 语句,检查是否有“孤儿”评论(即 aid 为空的评论):
      SELECT * FROM `dede_feedback` WHERE `aid` = 0;
    3. 如果有,你可以选择删除它们,或者检查它们应该属于哪篇文章并手动修正 aid 值。
  • 解决:删除无用的评论记录。

缓存问题

  • 原因:DedeCMS 有强大的缓存机制,如果你修改了评论,但系统没有及时更新缓存,前台显示的可能还是旧的数字,这在后台删除评论后最常见。
  • 排查:确认你是否在后台删除了评论,但前台页面依然显示旧数字。
  • 解决
    1. 更新系统缓存:登录后台,点击顶部菜单的“生成” -> “更新系统缓存”,然后点击“开始执行”。
    2. 更新文章页面缓存:进入“生成” -> “一键更新网站”,选择“更新所有HTML”或“仅动态页”,这会强制重新生成所有页面,包括评论数。
    3. 清理浏览器缓存:有时也可能是你自己的浏览器缓存问题,按 Ctrl + F5 强制刷新页面。

模板标签问题

  • 原因:模板文件被修改过,或者使用了错误的标签。
  • 排查
    1. 打开当前文章使用的模板文件(通常在 templets/default/ 目录下,名为 article_article.htm)。
    2. 查找评论数相关的标签,确保它存在并且语法正确,常见的正确标签格式是:
      {dede:field.id function="GetTotalVote(@me)"/}

      或者

      <span>评论(<strong>[field:ID function="GetTotalArcVote(@me)"/]</strong>)</span>
  • 解决:如果标签缺失或错误,请从默认模板中复制正确的标签代码并粘贴到你的模板文件中。

后台设置问题

  • 原因:后台的“系统基本参数”中,评论功能可能被关闭,或者设置了“仅会员评论”,但前台没有做相应判断。
  • 排查
    1. 登录后台,进入“系统” -> “系统基本参数” -> “核心设置”。
    2. 检查 “是否开启评论功能” 选项是否为“是”。
  • 解决:将其设置为“是”,但这通常会影响新评论的发表,而不是已有评论数的显示。

数据库表前缀问题

  • 原因:如果你的 DedeCMS 安装时自定义了数据库表前缀(mycms_ 而不是默认的 dede_),但你在手动修改或排查时仍然使用 dede_feedback,就会导致找不到表。
  • 排查:检查你的数据库,看评论表的真正名称是什么。
  • 解决:在所有 SQL 查询中,使用你正确的表前缀。

总结与快速排查步骤

当遇到评论数不正确时,请按以下顺序快速排查:

  1. 第一步:刷新缓存

    • 后台 -> 生成 -> 更新系统缓存。
    • 后台 -> 生成 -> 一键更新网站 -> 选择“仅动态页”或“更新所有HTML”。
    • 前台页面按 Ctrl + F5 强制刷新。
  2. 第二步:检查数据库

    • 后台 -> 系统 -> SQL命令行工具。
    • 执行 SELECT COUNT(*) FROM你的评论表名WHEREaid= '问题文章的ID',看数据库里实际有多少条评论,这个数字是否和后台显示的一致?
    • 执行 SELECT * FROM你的评论表名WHEREaid= 0,检查是否有脏数据。
  3. 第三步:检查模板

    • 打开文章模板文件 article_article.htm,确认评论数标签 {dede:field.id function="GetTotalVote(@me)"/} 是否存在且正确。
  4. 第四步:终极手段

    如果以上方法都无效,可以尝试在后台删除该文章,然后重新发布一遍,看评论数是否恢复正常,这可以排除一些文件损坏或数据错乱的极端情况。

通过以上详细的解析和排查方法,你应该能够解决绝大多数 DedeCMS 评论数显示异常的问题。

-- 展开阅读全文 --
头像
织梦首页seo标题调用
« 上一篇 02-04
织梦pc 移动共用模板
下一篇 » 02-04

相关文章

取消
微信二维码
支付宝二维码

目录[+]