创建自定义表单
这是所有操作的基础,你需要在DedeCMS后台创建一个新的表单,系统会自动为你生成数据表和相关的管理页面。

- 登录DedeCMS后台。
- 进入 【核心】 -> 频道管理】。
- 在页面底部,找到 【自定义表单】 按钮,点击进入。
- 点击 【增加一个自定义表单】。
- 填写表单信息:
- 表单名称:给你的表单起一个容易识别的名字,在线报名表”、“产品咨询表”。
- 数据表:系统会自动根据表单名称生成一个前缀为
dede_的数据表名(如deda_addonform1),通常无需修改。 - 默认表单模板:可以为这个表单指定一个默认的提交页面模板(可选)。
- 列表模板:用于显示表单提交记录列表的模板(可选)。
- 发布模板:用户填写并提交表单时使用的模板(可选)。
- 后台列表行数:设置在后台管理页面每页显示多少条记录。
- 是否验证码:建议开启,以防止垃圾信息提交。
- 是否前台投稿:根据需要选择是否允许会员在前台提交。
- 添加表单字段:
- 点击“确定”保存后,你会进入自定义表单的管理界面。
- 找到 【字段管理】 -> 【添加新字段】。
- 字段名:英文,用于数据库存储,
name,tel,email,content。注意:字段名只能包含字母、数字和下划线,不能使用中文或特殊符号。 - 字段提示:在前台表单中显示给用户的提示文字,您的姓名”、“联系电话”。
- 字段类型:根据你的需求选择,常用的有:
text:单行文本输入框。textarea:多行文本框(用于留言、备注等)。select:下拉选择框。radio:单选按钮。checkbox:复选框。datetime:日期时间选择器。
- 默认值:可以为字段设置一个默认值(可选)。
- 是否必填:勾选此项后,用户提交时该字段不能为空。
- 其他选项:根据字段类型不同,会有不同的选项,比如下拉框的选项列表等。
- 生成表单:
- 添加完所有需要的字段后,回到自定义表单管理主界面。
- 找到你刚创建的表单,在操作栏点击 【生成表单】。
- 系统会自动生成一个HTML表单代码,你可以复制这个代码,粘贴到你想要在前台显示表单的页面模板文件中(
index.htm)。
你的自定义表单已经可以接收用户提交的数据了,你可以在后台的 【自定义表单】 菜单下看到所有提交的记录。
第二步:调用自定义表单数据
调用数据通常有两种主要场景:
- 后台直接查看:直接在后台管理界面查看,最简单。
- 前台页面展示:展示“客户案例”、“报名成功者名单”等,这是本教程的重点。
在后台管理(最简单)
直接登录后台,进入 【自定义表单】,你就可以看到所有用户提交的数据,并进行审核、删除等操作,无需任何代码。
在前台页面调用(使用Dede标签)
这是最常用的方法,我们需要使用DedeCMS的标签 {dede:loop} 来遍历自定义表单数据表中的记录。

假设你的自定义表单名称是“在线报名”,那么对应的数据表名通常是 dede_addonform1(数字序号可能不同)。
获取数据表名
最准确的方法是登录你的网站数据库(如使用phpMyAdmin),查看 dede_addonform 这张表,里面会有一个字段 formname,记录了每个自定义表单对应的数据表名,你的“在线报名”表可能对应 dede_addonform18。
编写调用代码

在你需要展示数据的模板文件(case_list.htm)中,使用以下代码:
<h2>客户案例展示</h2>
<ul>
{dede:loop table='dede_addonform18' sort='id' row='10' if='ischeck=1'}
<li>
<strong>客户姓名:</strong>[field:name/]
<strong>公司名称:</strong>[field:company/]
<p>需求描述:[field:content/]</p>
<p>提交时间:[field:pubdate function="MyDate('Y-m-d H:i:s',@me)"/]</p>
</li>
{/dede:loop}
</ul>
代码详解:
{dede:loop}:这是DedeCMS最强大的循环标签之一。table='dede_addonform18':这是最重要的参数,填写你的自定义表单对应的数据表名。sort='id':按哪个字段排序。id是主键,按id降序排列(即最新的在最前面)是最常见的用法,如果你想按升序排列,可以写成sort='id' order='ASC'。row='10':调用多少条数据。if='ischeck=1':这是数据审核的关键。ischeck是自定义表单自带的审核状态字段。ischeck=1表示只调用已审核通过的数据,如果你的表单没有这个字段或者不需要审核,可以去掉这个条件。
[field:字段名/]:在循环内部,使用这个标签来输出每个字段的内容。[field:name/]:输出你之前在字段管理中添加的name字段的内容。[field:content/]:输出多行文本框的内容。[field:pubdate/]:输出记录提交时的时间戳(Unix时间格式)。
function="MyDate('Y-m-d H:i:s',@me)":这是一个函数,用于将时间戳格式化为更易读的日期时间格式。Y-m-d H:i:s是格式化模板,@me代表当前字段的值。
第三步:进阶技巧与常见问题
如何只调用最新的N条数据?
使用 row 参数即可,调用最新的5条数据:
{dede:loop table='dede_addonform18' sort='id' row='5' if='ischeck=1'}
<!-- 循环内容 -->
{/dede:loop}
如何分页调用自定义表单数据?
{dede:loop} 本身不支持分页,如果数据量很大,需要分页显示,你需要使用更复杂的 SQL语句查询。
{dede:sql sql='SELECT * FROM `dede_addonform18` WHERE ischeck=1 ORDER BY id DESC LIMIT 0,10'}
<li>
<strong>客户姓名:</strong>[field:name/]
<p>提交时间:[field:pubdate function="MyDate('Y-m-d',@me)"/]</p>
</li>
{/dede:sql}
分页实现思路:
- 使用
{dede:sql}执行查询。 - 在查询语句中使用
LIMIT来控制每页的起始位置和数量。 - 你需要手动编写分页逻辑,或者借助DedeCMS的
pagenote等变量来实现分页链接,这相对复杂一些,对于少量数据,直接用loop不分页是最佳实践。
调用后,如何跳转到指定页面?
当用户提交表单后,默认会跳转到系统生成的提示页面,如果你想让它跳转到你的指定页面(跳转到网站的“感谢页”):
- 在后台自定义表单管理界面,找到你的表单。
- 点击 【修改】。
- 在表单修改页面,找到 【跳转网址】 这个选项。
- 在输入框中填入你想要跳转的页面地址,
/thanks.html。 - 保存修改即可。
调用后,如何不显示后台的“未审核”状态?
调用数据时,务必加上 if='ischeck=1' 条件,这样可以确保只有你手动在后台审核通过的数据才会被显示出来,避免了前台展示大量垃圾或待审核信息。
- 创建表单:后台 -> 自定义表单 -> 增加表单 -> 添加字段 -> 生成表单。
- 前台提交:将后台生成的表单代码粘贴到需要展示的模板中。
- 前台调用:使用
{dede:loop table='你的数据表名' sort='id' row='数量' if='ischeck=1'}...{/dede:loop}- 字段显示:在循环体内使用
[field:你的字段名/]来输出内容。- 时间格式化:对
pubdate等时间戳字段使用function="MyDate(..., @me)"进行格式化。 - 字段显示:在循环体内使用
按照以上步骤,你就可以轻松地在DedeCMS中实现自定义表单的创建和数据调用了,如果在操作中遇到问题,请仔细检查数据表名、字段名是否正确,以及是否遗漏了关键的 if 条件。
