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

核心思路:
DedeCMS的自定义表单有一个专门的模板文件来展示提交记录,默认情况下,这个模板可能只设计用来显示单条记录,我们通过修改这个模板,引入DedeCMS的列表标签 {dede:list} 或 {dedarclist} 来循环输出所有记录。
详细步骤:
第1步:找到你的自定义表单ID
你需要知道你要修改的自定义表单的ID。
- 登录DedeCMS后台。
- 进入【核心】 -> 【内容频道管理】。
- 在左侧的“频道模型”列表中,找到你的自定义表单,它通常显示为“自定义表单(1)”、“自定义表单(2)”这样的形式,括号里的数字就是它的ID,假设你的ID是
1。
第2步:创建一个列表模板

- 在你的网站模板目录(通常是
/templets/your_template/)下,新建一个HTML文件,my_form_list.htm。 - 在这个新文件中,编写列表页的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步:在后台指定列表模板
- 再次进入DedeCMS后台【核心】 -> 【内容频道管理】。
- 找到你的自定义表单(如“自定义表单(1)”),点击后面的【修改】按钮。
- 在打开的页面中,找到“列表模板”选项。
- 点击【选择模板】,在弹出的窗口中选择你刚刚创建的
my_form_list.htm文件。 - 点击【确定】,然后保存整个频道。
第4步:访问列表页

你可以通过访问以下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表单ID,dede_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降序排列,即最新的记录在最上面。
- 这部分执行SQL查询。
{dede:list}: 在sql标签内部使用list标签,可以和普通列表页一样使用[field:字段名/]来调用数据。{dede:pagelist}: 在这里使用分页标签通常无效,因为sql标签默认不进行分页处理,如果需要分页,这个方法会更复杂,通常推荐使用方法一。
总结与建议
| 特性 | 方法一 (修改列表模板) | 方法二 (SQL直接调用) |
|---|---|---|
| 易用性 | ⭐⭐⭐⭐⭐ (非常简单,官方支持) | ⭐⭐⭐ (需要懂一点SQL) |
| 灵活性 | ⭐⭐⭐ (只能在 /plus/list.php?tid=x 访问) |
⭐⭐⭐⭐⭐ (可在任何模板页面使用) |
| 分页支持 | ⭐⭐⭐⭐⭐ (完美支持) | ⭐ (不支持或实现复杂) |
| 推荐度 | 强烈推荐 | 适用于在特定页面展示少量记录,且不需要分页的场景 |
对于绝大多数用户来说,方法一是最佳选择,它简单、稳定,并且完美支持分页功能,完全能满足“以列表形式排列”的需求,只有在非常特殊的情况下,才需要考虑使用方法二。
