织梦前台如何调用留言板?

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

使用官方提供的 {dede:guestbook} 标签(最常用、最推荐)

这是织梦官方内置的、专门用于调用留言板的标签,功能强大且易于使用,它可以在任何需要显示留言列表的模板页面(如首页、列表页、内容页等)直接使用。

织梦前台调用留言板
(图片来源网络,侵删)

基础语法

{dede:guestbook row='10' titlelen='30'}
    <li>
        <span class="title">[field:title/]</span>
        <span class="username">来自 [field:uname/] 的留言</span>
        <span class="time">[field:time function="MyDate('Y-m-d H:i',@me)"/]</span>
        <p class="content">[field:msg/]</p>
    </li>
{/dede:guestbook}

标签参数详解

参数 说明 示例
row 调用条数,显示多少条留言。 row='5' (显示5条)
infolen 内容长度最多显示多少个字符。 infolen='50' (内容最多50个字)
sort 排序方式,默认为按 dtime (发布时间) 降序。 sort='dtime' (按时间降序)
type 留言类型all为所有留言,replay为已回复的留言。 type='replay' (只显示已回复的)
imgwidth 缩略图宽度,如果留言有图片附件,设置缩略图宽度。 imgwidth='100'
imgheight 缩略图高度,如果留言有图片附件,设置缩略图高度。 imgheight='100'

字段变量(在标签内使用 [field:xxx/] 调用)

变量 说明
[field:id/] 留言ID
[field:uname/] 留言人昵称
[field:msg/]
[field:reply/] 管理员回复内容
[field:time/] 留言时间(原始时间戳)
[field:ischeck/] 是否审核(1为已审核,0为未审核)
[field:ip/] 留言人IP地址
[field:email/] 留言人邮箱
[field:homepage/] 留言人主页

注意:对于时间字段,通常需要使用 function 进行格式化,如 [field:time function="MyDate('Y-m-d H:i',@me)"/]

完整示例(在首页显示最新5条留言)

假设你的首页模板文件是 index.htm,你希望在某个侧边栏区域显示留言。

  1. 打开 index.htm 文件。
  2. 找到你想要插入留言列表的位置。
  3. 插入以下代码:
<div class="guestbook-box">
    <h3>最新留言</h3>
    <ul class="guestbook-list">
        {dede:guestbook row='5' infolen='50' type='replay'}
            <li>
                <div class="guest-info">
                    <span class="user">[field:uname/]</span>
                    <span class="time">[field:time function="MyDate('m-d H:i',@me)"/]</span>
                </div>
                <div class="msg-content">
                    [field:msg/]
                </div>
                {if field:reply/}
                <div class="admin-reply">
                    <span class="label">管理员回复:</span>
                    [field:reply/]
                </div>
                {/if}
            </li>
        {/dede:guestbook}
    </ul>
    <div class="more-link">
        <a href="{dede:global.cfg_cmspath/}/plus/guestbook.php">查看更多留言</a>
    </div>
</div>

代码解释

  • row='5':显示5条留言。
  • infolen='50':每条留言内容最多显示50个字符。
  • type='replay':只显示管理员已回复的留言,这样能保证显示的都是有效沟通。
  • {if field:reply/} ... {/if}:这是一个条件判断,只有当这条留言有管理员回复时,才会显示“管理员回复”部分。
  • {dede:global.cfg_cmspath/}/plus/guestbook.php:这是织梦留言板页面的固定地址,用于“查看更多”的链接。

使用SQL查询调用(高度自定义)

当官方的 {dede:guestbook} 标签无法满足你的复杂需求时(需要关联查询其他表、进行更复杂的排序等),你可以使用织梦的 {dede:sql} 标签直接执行SQL语句。

织梦前台调用留言板
(图片来源网络,侵删)

基础语法

{dede:sql sql='SELECT id, uname, msg, time, reply FROM dede_guestbook WHERE ischeck=1 ORDER BY dtime DESC LIMIT 0, 10'}
    <li>
        [field:uname/] 说:[field:msg function="cn_substr(@me, 50)"/]
        <small>时间:[field:time function="MyDate('Y-m-d',@me)"/]</small>
    </li>
{/dede:sql}

代码解析

  • sql='...':这里是你要执行的SQL查询语句。
    • dede_guestbook 是织梦留言板的数据表名,请确保你的表名没有修改过。
    • WHERE ischeck=1:只查询已审核的留言,这是非常重要的,避免显示垃圾或未审核内容。
    • ORDER BY dtime DESC:按发布时间降序排列,最新的在前面。
    • LIMIT 0, 10:从第0条开始,取10条数据。
  • [field:xxx/]:在 {dede:sql} 标签中,[field:xxx/] 用于获取SQL查询结果集的字段值。

调用指定会员的留言

如果你想调用某个特定会员的留言,可以在 {dede:guestbook} 标签中使用 userid 属性,或者在 {dede:sql} 中使用 WHERE userid = '...' 条件。

使用 {dede:guestbook}
{dede:guestbook row='10' userid='1' type='replay'}
    <!-- 显示用户ID为1的会员的留言 -->
{/dede:guestbook}

userid 属性的值就是该会员在 dede_member 表中的ID。

使用 {dede:sql}
{dede:sql sql='SELECT uname, msg, time FROM dede_guestbook WHERE userid=1 AND ischeck=1 ORDER BY dtime DESC'}
    <!-- 显示用户ID为1的会员的留言 -->
{/dede:sql}

常见问题与注意事项

  1. 留言未显示出来?

    • 检查审核状态:最常见的原因是留言未通过审核,请确保你的SQL语句或标签参数中包含了 ischeck=1 的条件,或者在后台审核了该留言。
    • 检查调用位置:确保你将代码放在了正确的模板文件中,并且该模板文件在后台被设置为“使用”(首页模板在“主页管理”中)。
    • 检查缓存:修改模板后,请到后台“生成” -> “更新HTML”或“更新缓存”,前台才能看到效果。
  2. 样式问题?

    • {dede:guestbook} 标签本身只负责输出数据,不负责样式,你需要自己编写CSS代码来美化留言列表的显示效果,如上面示例中的 .guestbook-box, .guest-info 等。
  3. 安全性问题?

    • 使用 {dede:sql} 标签时,务必注意SQL注入风险,不要直接从前端获取变量然后拼接到SQL语句中,如果必须使用,请对变量进行严格的过滤和转义。
方法 优点 缺点 适用场景
{dede:guestbook} 官方推荐,简单易用,参数丰富 灵活性相对较低 绝大多数常规留言列表调用需求,如首页侧边栏、文章页底部等。
{dede:sql} 高度灵活,可执行任何复杂查询 需要懂SQL,有安全风险,性能稍差 需要关联查询、特殊排序或官方标签无法实现的复杂业务逻辑。

对于99%的前台调用留言板的需求,强烈推荐使用第一种方法 {dede:guestbook},它足够强大且安全,是织梦CMS设计的最佳实践。

-- 展开阅读全文 --
头像
织梦留言表单多选框如何实现数据存储?
« 上一篇 04-23
C语言toupper函数如何正确使用?
下一篇 » 04-23
取消
微信二维码
支付宝二维码