织梦cms评论怎么制作

99ANYc3cd6
预计阅读时长 29 分钟
位置: 首页 织梦建站 正文

第一步:理解织梦评论系统的核心

织梦评论系统主要由三个部分构成:

织梦cms评论怎么制作
(图片来源网络,侵删)
  1. 评论表单 (/plus/feedback_ajax.php):这是一个AJAX处理文件,负责接收用户提交的评论数据,并将其写入数据库。
  2. 评论调用标签 {dede:feedback}:这是一个系统内置的标签,用于在内容页或列表页显示已有的评论列表。
  3. 数据库表 dede_feedback:存储所有评论内容的表,包括评论内容、用户名、邮箱、IP、评论的文章ID、时间等。

我们的工作就是:在前端页面放置一个评论表单,并使用 {dede:feedback} 标签来展示评论


第二步:在内容页启用并调用评论

这是最常见的需求,即在文章详情页下方显示评论框和评论列表。

确保模型开启了评论功能

进入后台 [核心] -> 模型管理],点击你所用模型(如“文章模型”)的 [字段管理]

  • 找到 feedback 字段。
  • 确保它的 启用 选项是勾选状态。
  • 保存。

页模板中调用评论

页模板文件,通常是 /templets/default/article_article.htm(路径可能因你的模板而异)。 下方,你希望显示评论的位置,插入以下代码:

织梦cms评论怎么制作
(图片来源网络,侵删)
<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;
}

第四步:高级自定义(可选)

后台审核评论

默认情况下,新提交的评论需要管理员在后台审核才能显示。

织梦cms评论怎么制作
(图片来源网络,侵删)
  • 路径[核心] -> [评论管理]
  • 操作:在这里你可以看到所有待审核和已通过的评论,进行审核或删除操作。

修改评论表单字段(如增加邮箱)

织梦默认的评论表单只有“昵称”和“内容”,如果你想增加“邮箱”字段:

  1. 修改数据库:在 dede_feedback 表中,增加一个字段,email (varchar(100))。
  2. 修改处理文件:打开 /plus/feedback.php,找到处理数据的部分(通常在 if($action == 'send') 里面),在 $feedback->UserName = trimMsg($username); 后面增加一行:
    $feedback->Email = trimMsg($email); // 假设你的表单字段名是 email
  3. 修改模板:在你的评论表单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/ 的权限是否可写(755777777有安全风险,慎用)。
  • 评论列表不显示?
    • 页模型开启了 feedback 字段。
    • 检查评论是否需要审核,去后台 [评论管理] 查看。
    • 确认 {dede:feedback} 标签是否正确放置。

通过以上步骤,你就可以在织梦CMS中成功制作并自定义一个功能完善的评论系统了。

-- 展开阅读全文 --
头像
织梦发送邮件550错误,问题出在哪?
« 上一篇 02-05
织梦安装模块失败,如何解决?
下一篇 » 02-05

相关文章

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

目录[+]