第一步:理解织梦评论系统的核心
织梦评论系统主要由三个部分构成:

(图片来源网络,侵删)
- 评论表单 (
/plus/feedback_ajax.php):这是一个AJAX处理文件,负责接收用户提交的评论数据,并将其写入数据库。 - 评论调用标签
{dede:feedback}:这是一个系统内置的标签,用于在内容页或列表页显示已有的评论列表。 - 数据库表
dede_feedback:存储所有评论内容的表,包括评论内容、用户名、邮箱、IP、评论的文章ID、时间等。
我们的工作就是:在前端页面放置一个评论表单,并使用 {dede:feedback} 标签来展示评论。
第二步:在内容页启用并调用评论
这是最常见的需求,即在文章详情页下方显示评论框和评论列表。
确保模型开启了评论功能
进入后台 [核心] -> 模型管理],点击你所用模型(如“文章模型”)的 [字段管理]。
- 找到
feedback字段。 - 确保它的
启用选项是勾选状态。 - 保存。
页模板中调用评论
页模板文件,通常是 /templets/default/article_article.htm(路径可能因你的模板而异)。
下方,你希望显示评论的位置,插入以下代码:

(图片来源网络,侵删)
<div class="article-content">
{dede:field.body/}
</div>
<!-- 评论区域开始 -->
<div class="pinglun">
<h3>评论 ({dede:field.id function="GetTotalArc(@me)"/})</h3>
<!-- 评论列表 -->
<div class="feedback-list">
{dede:feedback}
<li>
<div class="user-info">
<strong class="username">[field:username function="(@me=='guest' ? '游客' : @me)"/]</strong>
<span class="time">[field:pubdate function="MyDate('Y-m-d H:i',@me)"/]</span>
</div>
<div class="feedback-content">
[field:msg/]
</div>
</li>
{/dede:feedback}
</div>
<!-- 如果没有评论,显示提示信息 -->
<div class="feedback-none">
暂无评论,快来抢沙发吧!
</div>
<!-- 评论表单 -->
<div class="feedback-form">
<form action="{dede:field name='phpurl'/}/feedback.php" method="post" onsubmit="return false;">
<input type="hidden" name="arcID" value="{dede:field.id/}" />
<input type="hidden" name="action" value="send" />
<div class="form-group">
<label for="username">昵称:</label>
<input type="text" name="username" id="username" class="input-text" required />
</div>
<div class="form-group">
<label for="msg">评论内容:</label>
<textarea name="msg" id="msg" rows="5" class="textarea" required ></textarea>
</div>
<div class="form-group">
<!-- 验证码,可选但推荐开启 -->
<label for="validate">验证码:</label>
<input type="text" name="validate" id="validate" class="input-text" size="10" required />
<img src="{dede:field name='phpurl'/}/vdimgck.php" id="validateimg" onclick="this.src='{dede:field name='phpurl'/}/vdimgck.php?'+Math.random();" style="cursor:pointer" title="看不清?点击换一张" />
</div>
<button type="submit" class="btn-submit">发表评论</button>
</form>
</div>
</div>
<!-- 引入jQuery库,因为评论提交需要AJAX -->
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<!-- 评论提交的JS代码 -->
<script>
$(function(){
$(".feedback-form form").submit(function(){
var str = $(this).serialize();
$.ajax({
type: "POST",
url: $(this).attr('action'),
data: str,
success: function(data){
var reinfo = data.match(/<script[^>]*>([\s\S]*?)<\/script>/);
if(reinfo){
eval(reinfo[1]);
}
}
});
return false;
});
});
</script>
<!-- 评论区域结束 -->
代码解释:
{dede:field.id function="GetTotalArc(@me)"/}:获取当前文章的评论总数。{dede:feedback}...{/dede:feedback}:循环输出评论列表。[field:username function="(@me=='guest' ? '游客' : @me)"/]:如果用户是游客(未登录),显示“游客”,否则显示其用户名。[field:pubdate function="MyDate('Y-m-d H:i',@me)"/]:格式化评论时间。[field:msg/]:显示评论内容。
action="{dede:field name='phpurl'/}/feedback.php":评论提交到的处理页面。name="arcID" value="{dede:field.id/}":将当前文章ID作为隐藏字段提交,用于关联评论和文章。onclick="this.src='...?'+Math.random();":点击验证码图片时刷新。jQuery和$.ajax:这是评论功能能够无刷新提交的关键,将用户填写的数据通过AJAX发送到feedback.php,处理成功后,页面不会跳转,而是由JS刷新评论列表。
第三步:样式美化
上面的HTML结构很清晰,你可以通过CSS来美化它,使其看起来更美观。
在模板的CSS文件(如 /templets/default/style/css/style.css)中添加以下样式:
/* 评论区域容器 */
.pinglun {
margin-top: 30px;
padding: 20px;
border: 1px solid #e5e5e5;
border-radius: 5px;
background-color: #f9f9f9;
}
.pinglun h3 {
border-bottom: 2px solid #007bff;
padding-bottom: 10px;
margin-bottom: 20px;
color: #333;
}
/* 评论列表 */
.feedback-list {
list-style: none;
padding: 0;
margin-bottom: 20px;
}
.feedback-list li {
padding: 15px 0;
border-bottom: 1px dashed #ddd;
}
.feedback-list li:last-child {
border-bottom: none;
}
/* 用户信息 */
.user-info {
margin-bottom: 8px;
}
.username {
color: #007bff;
font-weight: bold;
margin-right: 15px;
}
.time {
color: #999;
font-size: 12px;
}
*/
.feedback-content {
color: #333;
line-height: 1.6;
}
/* 无评论提示 */
.feedback-none {
text-align: center;
color: #999;
padding: 20px 0;
}
/* 评论表单 */
.feedback-form .form-group {
margin-bottom: 15px;
}
.feedback-form label {
display: block;
margin-bottom: 5px;
font-weight: bold;
}
.feedback-form .input-text,
.feedback-form .textarea {
width: 100%;
padding: 8px 12px;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box; /* 关键,确保padding不会增加宽度 */
}
.feedback-form .textarea {
resize: vertical; /* 允许垂直调整大小 */
}
.feedback-form #validateimg {
vertical-align: middle;
margin-left: 10px;
cursor: pointer;
}
.feedback-form .btn-submit {
background-color: #007bff;
color: white;
border: none;
padding: 10px 20px;
border-radius: 4px;
cursor: pointer;
font-size: 16px;
}
.feedback-form .btn-submit:hover {
background-color: #0056b3;
}
第四步:高级自定义(可选)
后台审核评论
默认情况下,新提交的评论需要管理员在后台审核才能显示。

(图片来源网络,侵删)
- 路径:
[核心]->[评论管理] - 操作:在这里你可以看到所有待审核和已通过的评论,进行审核或删除操作。
修改评论表单字段(如增加邮箱)
织梦默认的评论表单只有“昵称”和“内容”,如果你想增加“邮箱”字段:
- 修改数据库:在
dede_feedback表中,增加一个字段,email(varchar(100))。 - 修改处理文件:打开
/plus/feedback.php,找到处理数据的部分(通常在if($action == 'send')里面),在$feedback->UserName = trimMsg($username);后面增加一行:$feedback->Email = trimMsg($email); // 假设你的表单字段名是 email
- 修改模板:在你的评论表单HTML中,增加一个邮箱输入框:
<div class="form-group"> <label for="email">邮箱:</label> <input type="email" name="email" id="email" class="input-text" /> </div>
自定义评论成功后的提示信息
打开 /plus/feedback.php 文件,找到类似这样的代码段:
if($typeid > 0 && $arctypetable != '')
{
$msg = "发表成功!<br><a href='javascript:history.go(-1);'>返回</a> | <a href='{$cfg_phpurl}/view.php?aid={$aid}'>查看</a>";
// ...
}
else
{
$msg = "发表评论成功!";
// ...
}
修改 $msg 变量的值即可。
常见问题排查
- 评论提交没反应?
- 检查是否引入了 jQuery 库。
- 检查浏览器控制台(F12)是否有JS错误。
- 检查
feedback.php路径是否正确。
- 评论提交后显示“发表失败”?
- 检查表单字段
name是否与后台处理文件中的变量名一致(如username,msg)。 - 检查验证码是否输入正确。
- 检查服务器目录
/plus/的权限是否可写(755或777,777有安全风险,慎用)。
- 检查表单字段
- 评论列表不显示?
- 页模型开启了
feedback字段。 - 检查评论是否需要审核,去后台
[评论管理]查看。 - 确认
{dede:feedback}标签是否正确放置。
- 页模型开启了
通过以上步骤,你就可以在织梦CMS中成功制作并自定义一个功能完善的评论系统了。
