dede自定义表单如何实现列表形式排列?

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

修改自定义表单模板(最直接、最推荐)

这是最直接的方法,你只需要修改你指定的模板文件,就能让表单提交的所有记录以列表形式展示。

dede自定义表单以列表形式排列
(图片来源网络,侵删)

核心思路:

DedeCMS的自定义表单有一个专门的模板文件来展示提交记录,默认情况下,这个模板可能只设计用来显示单条记录,我们通过修改这个模板,引入DedeCMS的列表标签 {dede:list}{dedarclist} 来循环输出所有记录。

详细步骤:

第1步:找到你的自定义表单ID

你需要知道你要修改的自定义表单的ID。

  1. 登录DedeCMS后台。
  2. 进入【核心】 -> 【内容频道管理】。
  3. 在左侧的“频道模型”列表中,找到你的自定义表单,它通常显示为“自定义表单(1)”、“自定义表单(2)”这样的形式,括号里的数字就是它的ID,假设你的ID是 1

第2步:创建一个列表模板

dede自定义表单以列表形式排列
(图片来源网络,侵删)
  1. 在你的网站模板目录(通常是 /templets/your_template/)下,新建一个HTML文件,my_form_list.htm
  2. 在这个新文件中,编写列表页的HTML结构,下面是一个完整的示例,你可以根据你的需求修改样式。

my_form_list.htm 模板代码示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">用户反馈列表</title>
    <style>
        body { font-family: "Microsoft YaHei", Arial, sans-serif; line-height: 1.6; padding: 20px; }
        .form-list-container { width: 80%; margin: 0 auto; border: 1px solid #ddd; padding: 20px; border-radius: 5px; }
        .form-list-title { text-align: center; color: #333; margin-bottom: 20px; border-bottom: 2px solid #eee; padding-bottom: 10px; }
        .form-list-item { padding: 15px; border-bottom: 1px dashed #ccc; margin-bottom: 10px; background-color: #f9f9f9; }
        .form-list-item:last-child { border-bottom: none; }
        .item-title { font-weight: bold; color: #0066cc; margin-bottom: 8px; }
        .item-field { margin: 5px 0; }
        .item-field strong { display: inline-block; width: 80px; color: #666; }
        .form-list-page { text-align: center; margin-top: 20px; }
        .form-list-page a, .form-list-page a:visited { color: #0066cc; margin: 0 5px; }
    </style>
</head>
<body>
    <div class="form-list-container">
        <h1 class="form-list-title">用户反馈列表</h1>
        {dede:list pagesize='10' titlelen='50'}
        <div class="form-list-item">
            <!-- 这里的 fieldname 必须和你后台自定义表单中添加的字段名完全一致 -->
            <div class="item-field">
                <strong>姓名:</strong>
                <span>[field:姓名/]</span>
            </div>
            <div class="item-field">
                <strong>电话:</strong>
                <span>[field:电话/]</span>
            </div>
            <div class="item-field">
                <strong>邮箱:</strong>
                <span>[field:邮箱/]</span>
            </div>
            <div class="item-field">
                <strong>反馈内容:</strong>
                <span>[field:内容/]</span>
            </div>
            <div class="item-field">
                <strong>提交时间:</strong>
                <span>[field:time function="MyDate('Y-m-d H:i',@me)"/]</span>
            </div>
        </div>
        {/dede:list}
        <!-- 分页 -->
        <div class="form-list-page">
            {dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
            {/dede:pagelist}
        </div>
    </div>
</body>
</html>

代码解释:

  • {dede:list pagesize='10'}: 这是DedeCMS的列表标签,用于循环输出记录。
    • pagesize='10': 表示每页显示10条记录。
  • [field:字段名/]: 这是调用单条记录中某个字段值的核心标签。字段名必须和你后台添加的字段名(如“姓名”、“电话”)完全一致,包括大小写。
  • [field:time function="MyDate('Y-m-d H:i',@me)"/]: time是DedeCMS自定义表单默认提交时间字段的固定名称,这里使用function对时间进行格式化,使其更易读。
  • {dede:pagelist ...}: 这是分页标签,用于生成分页链接。

第3步:在后台指定列表模板

  1. 再次进入DedeCMS后台【核心】 -> 【内容频道管理】。
  2. 找到你的自定义表单(如“自定义表单(1)”),点击后面的【修改】按钮。
  3. 在打开的页面中,找到“列表模板”选项。
  4. 点击【选择模板】,在弹出的窗口中选择你刚刚创建的 my_form_list.htm 文件。
  5. 点击【确定】,然后保存整个频道。

第4步:访问列表页

dede自定义表单以列表形式排列
(图片来源网络,侵删)

你可以通过访问以下URL来查看你的列表页: 你的域名/plus/list.php?tid=你的表单ID

如果你的域名是 www.example.com,表单ID是 1,那么访问地址就是: http://www.example.com/plus/list.php?tid=1

你就能看到所有提交的记录以列表形式展示了。


使用SQL直接在任意页面调用(更灵活)

如果你不想使用默认的 /plus/list.php 路径,或者想在网站的其他任何位置(如首页、文章页)展示表单列表,可以使用SQL标签直接调用。

核心思路:

使用DedeCMS的 {dede:sql} 标签,直接从 dedeaddon17 (或 dede_sys_enum) 数据表中查询数据,并用 {dede:list}{dede:loop} 循环输出。

注意:

dedeaddon17 是存储自定义表单数据的默认数据表,但表名可能会根据你的安装和升级有所不同,最稳妥的方法是进入phpMyAdmin查看你的数据库,找到存储你表单数据的表名,通常格式为 dede_addon表单IDdede_addon1

步骤:

第1步:确定数据表名 登录你的数据库管理工具(如phpMyAdmin),找到DedeCMS的数据库,查看 dede_addon 开头的表,确定你的数据表名,假设是 dede_addon1

第2步:在模板中添加代码 在你需要展示列表的模板文件(如 index.htm)中,添加以下代码:

<!-- 在你想要显示列表的位置添加以下代码块 -->
<div class="my-custom-form-list">
    <h2>最新反馈</h2>
    {dede:sql sql="SELECT * FROM `dede_addon1` ORDER BY id DESC"}
    {dede:list}
    <div class="feedback-item">
        <p><strong>来自 [field:姓名/] 的反馈:</strong></p>
        <p>[field:内容/]</p>
        <p class="meta">提交时间:[field:time function="MyDate('Y-m-d',@me)"/]</p>
    </div>
    {/dede:list}
    <!-- 如果不需要分页,可以去掉分页标签 -->
    {dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
    {/dede:pagelist}
</div>
<style>
.my-custom-form-list { margin: 20px 0; }
.feedback-item { border: 1px solid #eee; padding: 10px; margin-bottom: 10px; border-radius: 3px; }
.feedback-item .meta { font-size: 12px; color: #999; text-align: right; }
</style>

代码解释:

  • {dede:sql sql="SELECT * FROMdede_addon1ORDER BY id DESC"}:
    • 这部分执行SQL查询。SELECT * 表示查询所有字段。
    • FROM dede_addon1 是你的数据表名。
    • ORDER BY id DESC 表示按ID降序排列,即最新的记录在最上面。
  • {dede:list}: 在 sql 标签内部使用 list 标签,可以和普通列表页一样使用 [field:字段名/] 来调用数据。
  • {dede:pagelist}: 在这里使用分页标签通常无效,因为 sql 标签默认不进行分页处理,如果需要分页,这个方法会更复杂,通常推荐使用方法一

总结与建议

特性 方法一 (修改列表模板) 方法二 (SQL直接调用)
易用性 ⭐⭐⭐⭐⭐ (非常简单,官方支持) ⭐⭐⭐ (需要懂一点SQL)
灵活性 ⭐⭐⭐ (只能在 /plus/list.php?tid=x 访问) ⭐⭐⭐⭐⭐ (可在任何模板页面使用)
分页支持 ⭐⭐⭐⭐⭐ (完美支持) ⭐ (不支持或实现复杂)
推荐度 强烈推荐 适用于在特定页面展示少量记录,且不需要分页的场景

对于绝大多数用户来说,方法一是最佳选择,它简单、稳定,并且完美支持分页功能,完全能满足“以列表形式排列”的需求,只有在非常特殊的情况下,才需要考虑使用方法二。

-- 展开阅读全文 --
头像
织梦admin默认密码MD5值是多少?
« 上一篇 2025-12-20
dede5.7是否支持php5.3版本?
下一篇 » 2025-12-20

相关文章

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

目录[+]