dede在线留言如何调用?

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

直接使用系统自带的留言板标签(最简单)

这是最直接、最简单的方法,适用于在文章页、首页等任何地方调用一个完整的留言板列表。

dede 调用在线留言
(图片来源网络,侵删)

前提条件

确保你已经:

  • 在后台 核心 -> 内容模型管理 -> 普通文章 (或其他你需要的模型) 中,勾选了 “使用留言板” 选项。
  • 在后台 核心 -> 频道模型 -> 内容模型管理 -> 普通文章 -> 字段管理 中,确保有一个名为 guestbook 的字段,并且其“显示在发布页”是勾选的。
  • 在后台 互动 -> 留言簿管理 中,已经创建并启用了至少一个留言簿(默认名称为 "guestbook")。

调用代码

将以下代码放到你需要显示留言列表的模板文件中(index.htm, article_article.htm 等)。

{dede:guestbook row='10' titlelen='30'}
    <li>
        <strong>[field:username function="(@me=='guest' ? '游客' : @me)"/]</strong> 说:
        <p>[field:msg /]</p>
        <small>发表于:[field:posttime function="MyDate('Y-m-d H:i',@me)"/]</small>
    </li>
{/dede:guestbook}

标签参数说明

  • row='10':调用留言的数量,这里调用10条,len='30'`:留言标题的长度,虽然默认留言板没有标题字段,但保留此参数以防未来扩展。
  • type='...':指定留言簿的类型,如果网站有多个留言簿(针对不同产品或栏目),可以通过此参数来指定,默认为 guestbook
  • infolen='100'的显示长度。
  • orderby='posttime':排序方式,默认按发布时间排序,也可以是 id 等。

样式美化

上面的代码只是基础结构,你可以通过 CSS 来美化它,让它看起来更美观。

/* 在你的 CSS 文件中添加 */
.guestbook-list {
    list-style: none;
    padding: 0;
}
.guestbook-list li {
    border-bottom: 1px solid #eee;
    padding: 15px 0;
}
.guestbook-list strong {
    color: #333;
}
.guestbook-list p {
    color: #666;
    margin: 5px 0;
}
.guestbook-list small {
    color: #999;
    font-size: 12px;
}

使用自定义SQL标签(最灵活)

当你需要更复杂的查询,比如只调用某个特定栏目或特定会员的留言时,自定义SQL标签是最佳选择。

dede 调用在线留言
(图片来源网络,侵删)

场景示例

假设我们想在某个产品页面,只显示该产品相关的留言,我们需要一个额外的字段来关联产品ID。

操作步骤

第一步:修改留言表结构

  1. 进入你的网站数据库管理工具(如 phpMyAdmin)。
  2. 找到 DedeCMS 的默认留言表 dede_guestbook
  3. 为该表添加一个新字段,aid (文章ID),类型为 int(11)

第二步:在发布表单中添加该字段

  1. 在后台 核心 -> 频道模型 -> 内容模型管理 -> 普通文章 -> 增加一个新字段
  2. 字段名填 aid,字段类型选 数字,勾选“显示在发布页”。
  3. 这样,在后台发布文章时,你就可以为这篇文章关联一个ID(虽然这个ID和文章本身的ID是重复的,这里仅为演示)。

第三步:在模板中使用SQL标签 在需要显示留言的模板文件中(article_article.htm),使用 {dede:sql}

<h3>相关留言</h3>
<ul class="guestbook-list">
    {dede:sql sql="SELECT * FROM `dede_guestbook` WHERE aid=~aid~ ORDER BY id DESC LIMIT 10"}
        <li>
            <strong>[field:username function="(@me=='guest' ? '游客' : @me)"/]</strong>:
            <p>[field:msg /]</p>
            <small>[field:posttime function="MyDate('Y-m-d H:i',@me)"/]</small>
        </li>
    {/dede:sql}
</ul>

代码解释:

dede 调用在线留言
(图片来源网络,侵删)
  • sql="SELECT * FROMdede_guestbookWHERE aid=~aid~ ORDER BY id DESC LIMIT 10":这是标准的 SQL 查询语句。
    • ~aid~ 是一个特殊占位符,DedeCMS 会自动将其替换为当前页面的文章 ID,这是实现动态关联的关键。
    • ORDER BY id DESC:按留言ID降序排列,即最新的留言在前。
    • LIMIT 10:限制只查询10条记录。
  • {dede:sql} 标签内部可以使用 [field:字段名] 来循环输出查询结果的每一行。

创建一个独立的留言页面(最规范)

对于网站的“联系我们”或“在线留言”页面,最好的方式是创建一个独立的页面,这样结构清晰,也便于管理。

创建留言页面模板

  1. 在你的模板目录(如 /templets/default/)下,新建一个文件,命名为 guestbook_page.htm
  2. 在这个文件中,编写完整的HTML结构,包含留言列表和留言表单。

guestbook_page.htm 示例代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">在线留言 - {dede:global.cfg_webname/}</title>
    <link rel="stylesheet" href="/templets/default/style.css">
</head>
<body>
    {dede:include filename="head.htm"/}
    <div class="main-content">
        <h1>在线留言</h1>
        <!-- 留言列表 -->
        <div class="guestbook-list-container">
            <h2>留言列表</h2>
            {dede:guestbook row='20' titlelen='30' orderby='posttime'}
                <div class="guestbook-item">
                    <div class="gb-header">
                        <span class="gb-user">[field:username function="(@me=='guest' ? '游客' : @me)"/]</span>
                        <span class="gb-time">[field:posttime function="MyDate('Y-m-d H:i',@me)"/]</span>
                    </div>
                    <div class="gb-content">[field:msg /]</div>
                    <!-- 如果需要显示管理员回复 -->
                    <!-- [field:reply/] -->
                </div>
            {/dede:guestbook}
        </div>
        <!-- 留言表单 -->
        <div class="guestbook-form-container">
            <h2>发表留言</h2>
            <form action="/plus/guestbook.php" method="post" name="myform" onsubmit="return checkSubmit();">
                <input type="hidden" name="action" value="save" />
                <input type="hidden" name="dede_fields" value="username,text;email,text;msg,text;validate,text" />
                <input type="hidden" name="dede_fieldshash" value="这里需要动态生成" />
                <p>
                    <label for="username">昵称:</label>
                    <input type="text" id="username" name="username" class="intxt" required />
                </p>
                <p>
                    <label for="email">邮箱:</label>
                    <input type="email" id="email" name="email" class="intxt" required />
                </p>
                <p>
                    <label for="msg">留言内容:</label>
                    <textarea id="msg" name="msg" rows="8" class="intxt" required></textarea>
                </p>
                <p>
                    <!-- 验证码部分,根据你的后台设置 -->
                    <label>验证码:</label>
                    {dede:validatecode/}
                    <input type="text" name="validate" class="intxt" style="width:50px;" required />
                </p>
                <p>
                    <button type="submit" class="btn">提交留言</button>
                </p>
            </form>
        </div>
    </div>
    {dede:include filename="footer.htm"/}
    <script>
    function checkSubmit() {
        // 这里可以添加一些前端验证逻辑
        if (document.myform.msg.value == '') {
            alert('留言内容不能为空!');
            return false;
        }
        return true;
    }
    </script>
</body>
</html>

创建自定义页面

  1. 登录 DedeCMS 后台。
  2. 进入 核心 -> 创建HTML
  3. 页面名称 中填写你的页面标题,“在线留言”。
  4. 页面文件名 中填写你的模板文件名,guestbook
  5. 选择模板 中,选择你刚刚创建的 guestbook_page.htm
  6. 勾选 “生成HTML”。
  7. 点击 “提交” 按钮即可。

完成后,你就可以通过访问 /guestbook.html 来查看你的独立留言页面了。


总结与建议

方法 优点 缺点 适用场景
自带标签 简单、快捷、无需修改任何东西 灵活性差,无法进行复杂查询 在文章页、首页等位置简单展示几条最新留言。
自定义SQL 非常灵活,可以实现各种复杂关联查询 需要修改数据库,有一定技术门槛 需要将留言与特定内容(如产品、文章)关联起来的高级应用。
独立页面 结构最规范,功能完整,便于SEO和用户查找 需要创建单独的模板和页面 网站的“联系我们”、“在线留言”等标准功能页面。

对于绝大多数情况,方法一和方法三已经足够使用,方法二是为有特殊需求的开发者准备的进阶技巧,希望这些详细的说明能帮助你成功地在 DedeCMS 中调用在线留言!

-- 展开阅读全文 --
头像
织梦网站图片上传失败怎么办?
« 上一篇 今天
Linux C语言如何获取IP地址?
下一篇 » 今天

相关文章

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