- 模板名称: 简约风在线留言本
- 适用版本: 织梦DedeCMS 5.7 及以上版本
- 功能特点:
- 响应式设计: 适配电脑、平板和手机等不同设备。
- 会员功能: 区分游客和会员登录留言,会员信息自动填充。
- 验证码: 游客留言需填写验证码,防止垃圾信息。
- 管理功能: 后台可审核、回复、删除留言。
- 分页功能: 留言内容自动分页显示。
- 表情支持: 留言时可插入常用表情。
文件结构
在织梦的 /templets/ 目录下新建一个文件夹,guestbook,然后将以下文件放入其中:

(图片来源网络,侵删)
/templets/guestbook/
├── index.html (留言板列表页模板)
├── post.html (留言提交页模板,可选,通常与列表页合一)
└── style.css (留言板的样式文件)
模板代码
样式文件 (/templets/guestbook/style.css)
/* 留言板容器 */
.gb-container {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
max-width: 800px;
margin: 20px auto;
padding: 20px;
background-color: #fff;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}
/* 留言表单 */
.gb-form {
margin-bottom: 30px;
padding: 20px;
background-color: #f9f9f9;
border-radius: 5px;
}
.gb-form .form-group {
margin-bottom: 15px;
}
.gb-form label {
display: block;
margin-bottom: 5px;
font-weight: bold;
color: #333;
}
.gb-form input[type="text"],
.gb-form input[type="email"],
.gb-form textarea {
width: 100%;
padding: 10px;
border: 1px solid #ddd;
border-radius: 4px;
font-size: 14px;
box-sizing: border-box; /* 确保padding不会影响宽度 */
}
.gb-form textarea {
min-height: 100px;
resize: vertical;
}
.gb-form .btn {
display: inline-block;
padding: 10px 20px;
background-color: #007bff;
color: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 16px;
transition: background-color 0.3s;
}
.gb-form .btn:hover {
background-color: #0056b3;
}
/* 留言列表 */
.gb-list {
list-style: none;
padding: 0;
}
.gb-item {
padding: 15px;
border-bottom: 1px solid #eee;
margin-bottom: 15px;
background-color: #fff;
border-radius: 5px;
}
.gb-item:last-child {
border-bottom: none;
}
.gb-header {
display: flex;
align-items: center;
margin-bottom: 10px;
}
.gb-avatar {
width: 40px;
height: 40px;
border-radius: 50%;
margin-right: 10px;
background-color: #e0e0e0;
display: flex;
align-items: center;
justify-content: center;
font-weight: bold;
color: #666;
}
.gb-info {
flex-grow: 1;
}
.gb-author {
font-weight: bold;
color: #333;
}
.gb-date {
font-size: 12px;
color: #999;
}
.gb-content {
line-height: 1.6;
color: #555;
word-wrap: break-word;
}
.gb-reply {
margin-top: 10px;
padding-top: 10px;
border-top: 1px dashed #ddd;
background-color: #f0f8ff;
border-radius: 4px;
}
.gb-reply-title {
font-weight: bold;
color: #007bff;
margin-bottom: 5px;
}
/* 分页 */
.gb-pages {
text-align: center;
margin-top: 30px;
}
.gb-pages a, .gb-pages span {
display: inline-block;
padding: 5px 10px;
margin: 0 2px;
border: 1px solid #ddd;
text-decoration: none;
color: #333;
}
.gb-pages a:hover {
background-color: #f0f0f0;
}
.gb-pages .thispage {
background-color: #007bff;
color: #fff;
border-color: #007bff;
}
列表页模板 (/templets/guestbook/index.html)
这个模板将“留言表单”和“留言列表”放在同一个页面,这是最常见的设计。
<!DOCTYPE html>
<html>
<head>
<meta charset="="UTF-8">{dede:global.cfg_webname/} - 在线留言</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="{dede:global.cfg_cmsurl/}/templets/guestbook/style.css">
</head>
<body>
<div class="gb-container">
<h1 style="text-align: center; color: #333; margin-bottom: 30px;">在线留言</h1>
<!-- 留言表单 -->
<form name="guestbook" method="post" action="{dede:global.cfg_cmspath/}/plus/guestbook.php" class="gb-form">
<input type="hidden" name="dopost" value="send" />
<input type="hidden" name="aid" value="{dede:field.id/}" /> <!-- 如果关联到文章,则传递文章ID -->
{dede:php}
if ($cfg_ml->IsLogin()) {
// 如果会员已登录
echo '<p>欢迎您,<strong>'.$cfg_ml->M_UserName.'</strong>!</p>';
echo '<div class="form-group"><label>昵称</label><input type="text" name="uname" value="'.$cfg_ml->M_UserName.'" readonly /></div>';
echo '<div class="form-group"><label>邮箱</label><input type="email" name="email" value="'.$cfg_ml->M_Email.'" readonly /></div>';
} else {
// 如果游客未登录
echo '<div class="form-group"><label>昵称 <span style="color:red;">*</span></label><input type="text" name="uname" required /></div>';
echo '<div class="form-group"><label>邮箱</label><input type="email" name="email" /></div>';
}
{/dede:php}
<div class="form-group">
<label>留言内容 <span style="color:red;">*</span></label>
<textarea name="msg" required></textarea>
</div>
{dede:php}
if (!$cfg_ml->IsLogin()) {
// 游客显示验证码
echo '<div class="form-group"><label>验证码 <span style="color:red;">*</span></label>';
echo '<div style="display: flex; align-items: center;">';
echo '<input type="text" name="validate" required style="width: 150px;" />';
echo '<img src="' . $cfg_cmspath . '/include/vdimgck.php" style="margin-left: 10px;" onclick="this.src=this.src+'+time()+'" title="点击刷新验证码" />';
echo '</div></div>';
}
{/dede:php}
<button type="submit" class="btn">提交留言</button>
</form>
<!-- 留言列表 -->
<div class="gb-list-container">
<ul class="gb-list">
{dede:loop table='dede_guestbook' sort='dtime' row='10' titlelen='30'}
<li class="gb-item">
<div class="gb-header">
<div class="gb-avatar">{dede:field.name function='substr(@me, 0, 1)'/}</div>
<div class="gb-info">
<div class="gb-author">{dede:field.name/}</div>
<div class="gb-date">{dede:field.ip/} | {dede:field.dtime function='MyDate("Y-m-d H:i", @me)'/}</div>
</div>
</div>
<div class="gb-content">
{dede:field.msg function='htmlspecialchars_decode(@me)'/}
</div>
<!-- 后台回复显示 -->
{dede:if reply!=''}
<div class="gb-reply">
<div class="gb-reply-title">管理员回复:</div>
<div>{dede:field.reply/}</div>
</div>
{/dede:if}
</li>
{/dede:loop}
</ul>
<!-- 分页 -->
{dede:pagelist listsize='4'/}
</div>
</div>
</body>
</html>
后台设置与修改
仅仅有模板文件是不够的,还需要在织梦后台进行一些关键设置。
创建留言单页
- 登录织梦后台。
- 在“核心” -> “频道模型” -> “单页文档管理”中,点击“增加顶级页面”。
- 页面名称: 在线留言
- 保持为空。
- 生成HTML: 勾选“是”。
- 文件命名规则:
guestbook.html(这个文件名可以自定义,但要与后续步骤对应)。 - 点击“确定”。
修改留言本处理文件 (/plus/guestbook.php)
为了实现模板中 {dede:loop} 标签能正确调用留言数据,需要修改默认的留言本处理逻辑。
-
打开文件
/plus/guestbook.php。
(图片来源网络,侵删) -
找到
if($dopost=="send")部分,在ShowMsg("留言成功,请等待管理员审核!", $gurl, 0, 5000);这行代码之前,添加以下代码:// 在留言成功后,将留言状态改为已审核,以便在前台直接显示 $query = "UPDATE dede_guestbook SET ischeck=1 WHERE id='$id'"; $dsql->ExecuteNoneQuery($query);
说明: 默认情况下,新提交的留言
ischeck字段为0,表示“未审核”,不会在前台显示,我们将其改为1,表示“已审核”,这样就能直接显示出来。注意: 这会绕过后台审核,如果需要审核,请勿添加此代码。
(可选) 修改留言表单的提交地址
在模板 index.html 中,表单的 action 属性指向的是 guestbook.php,这个文件默认是用于处理AJAX请求的,可能会导致提交失败或刷新整个页面。
为了更好的用户体验,建议修改表单提交地址为:

(图片来源网络,侵删)
<!-- 将原来的 -->
<form ... action="{dede:global.cfg_cmspath/}/plus/guestbook.php" ...>
<!-- 修改为 -->
<form ... action="{dede:global.cfg_cmspath/}/plus/guestbook.php?dopost=send" ...>
或者,如果你将留言板做成了单页,并且想提交后停留在当前页面,可以这样写:
<form ... action="{dede:global.cfg_cmspath/}/plus/guestbook.php?dopost=send&gurl={dede:global.cfg_cmsurl/}/guestbook.html" ...>
gurl 参数指定了提交成功后跳转的URL。
安装与使用步骤
- 上传模板文件: 将
guestbook文件夹上传到您的织梦网站/templets/目录下。 - 创建单页: 按照上述“后台设置”的步骤,创建一个名为“在线留言”的单页文档,并命名为
guestbook.html。 - 修改处理文件: 按照需要,修改
/plus/guestbook.php文件。 - 生成页面: 在后台“生成” -> “一键更新网站”中,选择“更新HTML”,并勾选“更新所有页面”或单独更新你创建的
guestbook.html。 - 访问测试: 通过网站前台访问你设置的留言板页面(
yourdomain.com/guestbook.html),测试留言功能是否正常。
注意事项与扩展
- 安全性: 开放留言板容易被垃圾信息(SPAM)攻击,建议始终开启验证码功能,对于更高级的防垃圾信息,可以考虑集成 reCAPTCHA 或其他第三方服务。
- 审核功能: 如果你希望所有留言都需要后台审核,请勿修改
guestbook.php文件中的ischeck值,这样,新留言将不会在前台显示,直到你在后台“留言管理”中点击“审核通过”。 - 样式调整:
style.css文件中的颜色、间距、字体等都可以根据您网站的整体风格进行自由调整。 - 功能扩展:
- 邮件通知: 可以修改
guestbook.php,在收到新留言时,使用mail()函数发送邮件通知网站管理员。 - Ajax提交: 可以使用 jQuery 等前端库,将表单改为Ajax提交,实现无刷新留言,用户体验更佳。
- 邮件通知: 可以修改
这个完整的方案应该能帮助你快速搭建一个功能完善的在线留言本,祝你使用愉快!
