- 创建留言板栏目:在后台建立一个专门用于存放留言的栏目。
- 添加留言板内容页:生成一个实际的留言页面。
- 制作留言板模板:编写留言板页面的 HTML 结构和样式。
- 首页调用留言板:在网站首页的某个位置,显示最新的留言摘要。
- 高级应用:AJAX 无刷新留言:提升用户体验。
第一步:创建留言板栏目
这是最基础的一步,目的是告诉 DedeCMS 我们有一个专门存放留言的板块。

(图片来源网络,侵删)
- 登录您的 DedeCMS 后台。
- 在左侧菜单栏中,找到 【核心】 -> 【栏目管理】。
- 点击 【增加顶级栏目】。
- 在弹出的表单中填写以下信息:
- 栏目名称:填写
留言板或访客留言。 - 栏目目录:系统会自动根据栏目名称生成一个拼音目录,如
liuyanban,你可以手动修改,但建议使用英文或拼音,避免使用中文。 - 栏目类型:选择 【普通栏目】。
- :选择 】。
- 列表模板:先不填,等我们制作好模板文件后再选择。
- 发布位置:可以不选,因为我们通常不会在首页直接显示整个留言板列表,而是调用最新留言。
- 栏目名称:填写
- 填写完毕后,点击 【确定】 保存。
一个名为“留言板”的顶级栏目就创建好了。
第二步:添加留言板内容页
这个页面就是用户访问时看到的完整留言列表页面。
- 在 【栏目管理】 中,找到你刚创建的“留言板”栏目。
- 点击栏目名称右侧的 【增加文档】。
- 填写文档信息:
- 填写
访客留言板。 - 栏目选择:确保选择的是你刚创建的“留言板”栏目。
- 作者来源:可以留空或填写“管理员”。
- 缩略图:可以上传一张留言板的封面图,也可以不填。
- 这里可以写一些引导语,欢迎来到我们的网站,请留下您的宝贵意见或建议!”。
- 发布选项:确保 【生成HTML】 是勾选状态。
- 填写
- 点击 【确定】 保存。
第三步:制作留言板模板
这是留言板页面的核心,决定了留言板的外观和功能。
-
创建模板文件:
(图片来源网络,侵删)- 通过 FTP 或服务器的文件管理工具,进入您的 DedeCMS 安装目录。
- 找到
/templets/目录。 - 在
/templets/目录下新建一个文件夹,default(如果已经存在则直接使用)。 - 在
/templets/default/目录下,新建一个 HTML 文件,命名为guestbook.htm,这个文件名就是我们之前在“栏目管理”中设置的“栏目目录”liuyanban对应的模板。
-
编写模板代码 (
guestbook.htm): 下面是一个完整且常用的留言板模板代码,包含了留言列表、留言表单和分页。<!DOCTYPE html> <html> <head> <meta charset="UTF-8">{dede:field.title/} - {dede:global.cfg_webname/}</title> <meta name="description" content="{dede:field.description function='html2text(@me)'/}" /> <link rel="stylesheet" href="{dede:global.cfg_templets_skin/}/style.css"> <style> .guestbook-list { margin-top: 20px; } .guestbook-item { border-bottom: 1px solid #eee; padding: 15px 0; } .guestbook-info { color: #666; font-size: 12px; margin-bottom: 5px; } .guestbook-content { line-height: 1.6; } .reply-box { background-color: #f9f9f9; padding: 15px; border-radius: 5px; margin-top: 10px; } .reply-title { color: #0066cc; font-weight: bold; margin-bottom: 5px; } .guestbook-form { margin-top: 30px; padding: 20px; border: 1px solid #ddd; border-radius: 5px; } .form-group { margin-bottom: 15px; } .form-group label { display: block; margin-bottom: 5px; font-weight: bold; } .form-group input, .form-group textarea { width: 100%; padding: 8px; border: 1px solid #ccc; border-radius: 3px; box-sizing: border-box; } .form-group textarea { height: 100px; resize: vertical; } .btn-submit { background-color: #0066cc; color: white; padding: 10px 20px; border: none; border-radius: 3px; cursor: pointer; } .btn-submit:hover { background-color: #0052a3; } </style> </head> <body> <div class="main"> <h1>{dede:field.title/}</h1> <!-- 留言列表 --> <div class="guestbook-list"> {dede:feedback} <div class="guestbook-item"> <div class="guestbook-info"> <span class="user">访客:[field:username function='(@me=="guest" ? "匿名网友" : @me)'/]</span> <span class="time">发表于:[field:msgtime function='strftime("%Y-%m-%d %H:%M:%S", @me)'/]</span> </div> <div class="guestbook-content"> [field:msg/] </div> <!-- 管理员回复 --> [field:isreply/] <div class="reply-box"> <div class="reply-title">管理员回复:</div> <div>[field:reply/]</div> </div> <!-- /管理员回复 --> </div> {/dede:feedback} <!-- 如果没有留言,显示提示 --> <div class="no-message" style="text-align: center; padding: 20px; color: #999;"> 暂无留言,快来抢沙发吧! </div> </div> <!-- 留言表单 --> <div class="guestbook-form"> <h3>发表留言</h3> <form action="{dede:global.cfg_cmspath/}/plus/feedback.php" method="post" name="feedback"> <input type="hidden" name="action" value="send" /> <input type="hidden" name="aid" value="{dede:field.id/}" /> <input type="hidden" name="dede_fields" value="username,text;msg,text" /> <input type="hidden" name="dede_fieldshash" value="{dede:hash md5=('/username/msg')/}" /> <div class="form-group"> <label for="username">您的昵称:</label> <input type="text" name="username" id="username" class="intxt" required /> </div> <div class="form-group"> <label for="msg">留言内容:</label> <textarea name="msg" id="msg" class="textarea" required></textarea> </div> <div class="form-group"> <!-- 验证码,防止恶意提交 --> {dede:php} if($cfg_feedback_ck=='Y') { echo '<label for="vdcode">验证码:</label>'; echo '<input type="text" name="vdcode" id="vdcode" style="width:50px;text-align:center;"/> '; echo "<img src='{$cfg_cmspath}/include/vdimgck.php' style='cursor:pointer;' onclick='this.src=\"{$cfg_cmspath}/include/vdimgck.php?\"+Math.random();' alt='看不清?点击更换' />"; } {/dede:php} </div> <button type="submit" class="btn-submit">提交留言</button> </form> </div> <!-- 分页 --> {dede:pagebreak/} </div> </body> </html> -
更新栏目设置:
- 回到 DedeCMS 后台 【栏目管理】。
- 点击“留言板”栏目右侧的 【更改】。
- 在 【列表模板】 选项中,选择我们刚刚创建的模板
/templets/default/guestbook.htm。 - 点击 【确定】 保存。
-
生成页面:
- 进入 【生成】 -> 【更新栏目HTML】,选择“留言板”栏目并更新。
- 进入 【生成】 -> 【更新文档HTML】,选择“留言板”栏目下的那篇文档并更新。
访问你的留言板页面(http://你的域名/liuyanban),应该就能看到一个可以正常使用的留言板了。

(图片来源网络,侵删)
第四步:首页调用最新留言
我们通常希望在首页展示几条最新的留言,以增加网站互动性。
-
打开首页模板: 通过 FTP 或服务器文件管理,打开
/templets/default/目录下的index.htm文件。 -
添加调用代码: 在你希望显示留言的位置(例如侧边栏、底部等),加入以下 DedeCMS 标签。
代码示例:
<div class="sidebar-box"> <h3>最新留言</h3> <ul class="guestbook-list-index"> {dede:feedback row='5' titlelen='30' infolen='60'} <li> <span class="user">[field:username function='(@me=="guest" ? "匿名网友" : @me)'/]:</span> <a href="{dede:field name='arcurl'/}#comment" title="[field:msg/]"> [field:msg function='cn_substr(@me, 60)'/] </a> <span class="time">([field:msgtime function='strftime("%m-%d", @me)'/])</span> </li> {/dede:feedback} </ul> </div>代码解释:
{dede:feedback ...}:调用留言的标签。row='5':显示 5 条最新留言。titlelen='30'长度,这个对留言无效,但可以保留。infolen='60'的长度,截取 60 个字符。[field:username function='(@me=="guest" ? "匿名网友" : @me)'/]:判断用户名,如果是 "guest"(游客)则显示“匿名网友”,否则显示用户名。[field:msg function='cn_substr(@me, 60)'/]:对留言内容进行截取,显示前 60 个字符。[field:msgtime function='strftime("%m-%d", @me)'/]:格式化留言时间,只显示月-日。{dede:field name='arcurl'/}#comment:这条是关键,它会链接到留言板页面的评论区。#comment是 HTML 的锚点,可以跳转到页面的评论(留言)区域。
-
更新首页: 回到 DedeCMS 后台,进入 【生成】 -> 【更新主页HTML】,点击“开始更新”。
刷新你的网站首页,就能看到最新留言了。
第五步:高级应用 - AJAX 无刷新留言
默认的留言方式是提交后整个页面刷新,体验不好,我们可以通过引入 AJAX 功能来实现无刷新提交。
这通常需要修改系统文件或使用现成的插件,有一定技术门槛。
基本思路:
- 修改
/plus/feedback.php:在其中增加一个判断,如果请求是 AJAX 方式,则只返回 JSON 数据(如{"code":1,"msg":"提交成功"}),而不是跳转整个页面。 - 修改模板
guestbook.htm中的表单:将form的onsubmit事件绑定一个 JavaScript 函数,阻止默认提交。 - 编写 JavaScript 代码:使用
fetch或$.ajax发送表单数据到feedback.php,并根据返回的 JSON 数据,动态地在页面上添加新的留言项,并清空表单。
警告:直接修改核心文件(如
feedback.php)在系统升级后可能会被覆盖,建议在修改前备份文件,或者寻找更安全的插件方案。
创建一个 DedeCMS 首页留言板,核心就是 “建栏目 -> 加内容 -> 写模板 -> 调用数据” 这四个步骤,虽然看起来步骤较多,但每一步都很清晰,按照以上步骤操作,你就能成功地在你的 DedeCMS 网站上搭建一个功能完善的留言板了。
