页评论如何调用与显示?

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

下面我将从 工作原理、常见问题及解决方案、以及自定义修改 三个方面进行详细说明。

dede 内容页评论
(图片来源网络,侵删)

DedeCMS 评论功能的工作原理

要理解问题,首先要知道它是怎么工作的,DedeCMS 的评论系统主要涉及以下几个部分:

  1. 数据表

    • dede_feedback:这是存储所有评论的核心数据表,每条评论都作为一个记录存在,包含评论者ID、昵称、邮箱、内容、评论的文章ID、IP地址、评论时间、审核状态(0=待审核,1=已通过)等字段。
  2. 模板文件

    • templets/default/feedback.htm:这是评论列表和评论表单的默认模板文件,你在这个文件里看到的所有样式和HTML结构,都是用来展示评论和让用户提交评论的。
    • templets/default/plus/feedback_ajax.htm:这个文件通常用于AJAX无刷新提交评论时,服务器返回的HTML片段。
  3. 程序文件

    dede 内容页评论
    (图片来源网络,侵删)
    • /plus/feedback.php:这是处理评论提交的核心PHP脚本,当用户在前台点击“发表评论”时,表单数据会通过POST方式提交到这个文件。
    • 这个文件会做几件事: a. 验证用户输入(是否为空、是否包含敏感词等)。 b. 将评论数据插入到 dede_feedback 数据表中,arcticle 字段(审核状态)默认为 0(待审核)。 c. 根据是否开启AJAX,返回相应的结果(成功/失败信息)。
  4. 标签调用

    • 页模板文件(通常是 templets/default/article_article.htm)中,需要使用特定的DedeCMS标签来调用评论功能。
    • {dede:feedback}:这个标签是用来显示评论列表的,它会从 dede_feedback 表中查询出指定文章ID的所有已审核评论,并按照 dede/feedback.htm 模板的格式进行渲染。
    • 评论表单(<form>)通常直接写在 article_article.htm 或通过 include 引入 feedback.htm

简单流程总结:页填写评论 -> 提交到 plus/feedback.php -> PHP处理并存入数据库(状态为待审) -> 如果AJAX提交,返回结果;如果是普通提交,页面刷新 -> {dede:feedback} 标签从数据库读取已审核评论并显示。


常见问题及解决方案

这是大家最关心的部分,评论功能出问题,90%的情况都集中在下面几点。

问题1:评论不显示,或者显示“该文章不允许评论”

原因分析: 这通常不是评论系统本身的问题,而是文章模型或的设置导致的。

解决方案

  1. 检查文章模型设置

    • 进入后台“核心” -> “内容模型管理” -> “普通文章”。
    • 点击“字段管理”,确保有一个名为 “文章属性” 的字段(通常是系统自带的)。
    • 编辑这个字段,在“后台字段参数”中,确保 “是否允许评论” 这个选项是 “是”
    • 保存后,去前台刷新一下,可能需要清空浏览器缓存。
  2. 检查单篇文章设置

    • 在后台编辑某篇文章时,在右侧的“常规选项”或“自定义字段”区域,找到“文章属性”。
    • 确保 “允许评论” 这个选项被勾选了,后台模型改了,但单篇文章的属性没改过来。

问题2:评论提交后,页面没有反应,或者显示“评论失败”

原因分析: 这通常是 feedback.php 文件在执行时遇到了错误,比如权限问题、数据库连接问题、或代码逻辑错误。

解决方案

  1. 检查目录权限

    • 确保 /plus/ 目录及其下的 feedback.php 文件有可执行可写权限,通常设置为 755 即可。
  2. 检查 feedback.php 文件

    • 用FTP或文件管理器打开 /plus/feedback.php 文件。
    • 找到这一行:$needCheck = isset($needCheck) ? $needCheck : 1;
    • 将其修改为:$needCheck = 0;
    • 解释$needCheck 这个变量控制着是否进行敏感词验证,如果因为敏感词词典文件损坏或路径错误导致验证失败,评论就会提交失败,临时设为0可以绕过这一步,用于判断问题根源,如果修改后可以提交,说明就是敏感词模块的问题,需要检查相关词典文件。
  3. 检查PHP错误日志

    • 如果上述方法无效,说明代码有更深层的问题,请联系你的服务器空间商,查看一下网站的PHP错误日志,里面会有具体的错误信息,Fatal error: ...,根据错误信息去修复。

问题3:评论提交后,内容为空或显示乱码

原因分析: 通常是字符编码问题,或者开启了内容过滤但过滤规则有问题。

解决方案

  1. 检查网站字符编码

    • 确保你的网站数据库、页面文件、PHP文件都使用 UTF-8 编码,不统一是乱码的万恶之源。
    • 在后台“系统” -> “系统基本参数” -> “核心设置”中,检查“GBK编码”是否为“否”,确保是UTF-8模式。
  2. 过滤

    • 后台“系统” -> “系统基本参数” -> “其他选项” -> “过滤所有HTML标签”设置为“否”。
    • 后台“系统” -> “系统基本参数” -> “安全设置” -> “启用关键字替换”可以暂时关闭,看是否是关键字替换规则导致的。

问题4:评论审核机制不工作

原因分析: 评论提交后直接显示,或者后台看不到待审核评论。

解决方案

  1. 检查 feedback.php 中的审核逻辑

    • 打开 /plus/feedback.php,找到插入数据库的SQL语句附近。
    • 应该有一句类似 if($arctid>0 && $typeid>0 && $msg!=''){...} 的代码块。
    • 在执行 INSERT INTO ... 语句之前,确保 $feedback 数组中的 arcticle 字段被设置为 0$feedback['arcticle'] = 0;
    • 如果代码直接写死了 arcticle=1,那评论就永远不需要审核了。
  2. 检查后台审核流程

    • 评论提交后,应该会出现在后台“评论”管理模块中。
    • 进入后台“内容” -> “评论管理”,查看是否有待审核的评论。
    • 如果没有,说明评论根本没有存入 dede_feedback 表,请参考问题2。
    • 如果有,点击“审核通过”即可在前台显示。

自定义评论样式和功能

如果你想修改评论的样式,或者增加一些功能,可以按照以下步骤操作:

修改评论显示样式

这是最常见的需求,比如改变评论框的样式、调整评论列表的布局。

  • 操作步骤

    1. 用FTP连接你的服务器。
    2. 进入 /templets/default/ 目录。
    3. 找到并下载 feedback.htm 文件。
    4. 用Dreamweaver、VS Code等编辑器打开它,像修改普通HTML文件一样修改它的样式和结构。
    5. 保存后,上传回服务器,覆盖原文件即可。
  • 小技巧

    • 为了防止模板升级后被覆盖,你可以在 /templets/ 下新建一个以你的网站命名的文件夹(/templets/yourname/),然后把 feedback.htm 放在里面,然后在后台“系统” -> “系统基本参数” -> “默认模板风格”中,将默认风格修改为 yourname

增加评论验证码(防止垃圾评论)

默认情况下,DedeCMS 的评论功能在登录状态下可以免验证码,未登录则需要验证码,如果你想让所有人都需要验证码,可以修改:

  • 操作步骤
    1. 打开 /plus/feedback.php 文件。
    2. 找到验证码验证的逻辑段,通常在文件中下部。
    3. 找到类似这样的代码:
      if($safequestion!='')
      {
          $safeanswer = strtolower(trim($safeanswer));
          $safecode = strtolower(trim($safecode));
          if($safeanswer != $safecode)
          {
              ShowMsg('验证码错误!', '-1');
              exit();
          }
      }
    4. 将其修改为强制验证
      // 强制开启验证码
      $safequestion = 1; // 模拟验证码问题存在
      $safeanswer = strtolower(trim($safeanswer));
      $safecode = strtolower(trim($safecode));
      if($safeanswer != $safecode)
      {
          ShowMsg('验证码错误!', '-1');
          exit();
      }
    5. 确保你的 feedback.htm 模板里有验证码的输入框:
      <input type="text" name="safeanswer" size="20" />
      <img src="{dede:global.cfg_cmspath/}/plus/vcode.php" id="vcodeimg" style="cursor:pointer" onclick="this.src='{dede:global.cfg_cmspath/}/plus/vcode.php?'+Math.random()" title="点击刷新验证码" />

希望这份详细的指南能帮助你解决 DedeCMS 内容页评论的各种问题!如果遇到更具体的报错信息,可以提供出来,以便更精准地定位问题。

-- 展开阅读全文 --
头像
c语言teletype
« 上一篇 04-20
织梦调用优酷去广告
下一篇 » 04-20

相关文章

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

目录[+]