这个过程非常简单,核心是将自定义表单的数据关联到织梦的核心数据表,这样后台的内容模型管理模块就能识别并显示它们。

(图片来源网络,侵删)
核心思路
列表(如文章、软件等)之所以能统一管理,是因为它们的数据都存储在核心数据表中(如 dede_archives, dede_addonarticle 等),自定义表单默认使用的是 dede_diyforms 这个独立的表,后台默认不直接显示它。
要让后台显示,我们只需要:
- 创建一个栏目:这个栏目将作为我们自定义表单数据的“容器”。
- 创建一个内容模型:这个模型定义了我们的自定义表单有哪些字段(如姓名、电话、留言等)。
- 关联模型:将第一步创建的栏目与第二步创建的模型关联起来。
- 修改表单提交代码:让表单提交时,数据不是存入
dede_diyforms,而是存入我们新模型对应的表中。
完成以上步骤后,你就可以像管理文章一样,在后台的“核心” -> “内容模型管理” -> “内容维护”中看到并管理你的表单提交数据了。
详细图文步骤
假设我们要创建一个“在线留言”表单,包含“姓名”、“电话”、“留言内容”三个字段。
第一步:创建栏目
- 登录织梦后台,进入【核心】 -> 【栏目管理】。
- 点击顶部的【增加顶级栏目】。
- 填写栏目信息:
- 栏目名称:填写一个你想要的名称,在线留言”。(这个名称在后台菜单中会显示)
- 栏目目录:可以留空,系统会自动生成,或者手动填写一个英文字符串,如
message。 - 栏目类型:务必选择“内部栏目”。
- :先不选! 等我们创建好模型后再回来选择。
- 其他选项可以默认。
- 点击【确定】保存,记住这个栏目的ID(通常是数字,如 5)。
第二步:创建内容模型
- 进入【核心】 -> 模型管理】。
- 点击【增加一个新模型】。
- 填写模型信息:
- 模型名称:填写一个识别名称,在线留言表单”。
- 表前缀:非常重要! 织梦会自动生成一个表前缀,如
dede_addonmsg。请务必记住这个表名,后面修改表单代码时会用到。 - 名称:这个名称会在后台菜单中显示,可以写“在线留言”。
- 简介:可以简单描述一下。
- 点击【下一步,添加字段】。
- 添加字段:这是最关键的一步,我们需要添加“姓名”、“电话”、“留言内容”。
- 字段1:
- 字段名称:
name(建议用英文,不含空格) - 字段提示:
姓名(这个是后台表单里显示的提示文字) - 字段类型:
单行文本 - 其他选项:保持默认或根据需要设置,如是否为必填。
- 点击【保存】。
- 字段名称:
- 字段2:
- 字段名称:
tel - 字段提示:
电话 - 字段类型:
单行文本 - 点击【保存】。
- 字段名称:
- 字段3:
- 字段名称:
content - 字段提示:
- 字段类型:
多行文本(编辑器) - 点击【保存】。
- 字段名称:
- 你可以根据需要继续添加更多字段。
- 字段1:
- 所有字段添加完毕后,点击【保存并生成模型】。
- 模型创建成功后,系统会提示你模型ID和对应的附加表名(如
dede_addonmsg)。请务必记录下这个附加表名。
第三步:关联模型与栏目
- 回到【核心】 -> 【栏目管理】。
- 找到我们第一步创建的“在线留言”栏目,点击后面的【修改】。
- 在修改页面,找到 ” 这一栏,从下拉菜单中选择我们刚刚创建的模型(名称为“在线留言”的那个)。
- 其他选项可以按需修改,然后点击【确定】保存。
第四步:修改前台表单代码
我们需要修改你的自定义表单模板(通常是 /templets/plus/diyform.htm),让它提交数据到我们新创建的模型附加表中,而不是默认的 dede_diyforms。
打开你的表单模板文件,找到 <form> 标签,修改 action 属性。
原始代码通常是:
<form action="/plus/diy.php" enctype="multipart/form-data" method="post">
修改为:
<form action="/plus/diy.php?modelid=[你的模型ID]" enctype="multipart/form-data" method="post">
如何获取模型ID?
- 模型管理】里,你刚刚创建的模型列表中可以看到。
- 或者,在第三步修改栏目时,选择模型后,URL栏里可以看到
mid=[模型ID]。
示例:
如果你的模型ID是 6,action 就应该写成:
<form action="/plus/diy.php?modelid=6" enctype="multipart/form-data" method="post">
隐藏字段说明:
dede_fields: 用于告诉后台这个表单有哪些字段,格式是字段名1,字段名2。name,text;tel,text;content,textarea,但通常织梦会自动处理,可以不写。dede_fieldshide: 用于隐藏一些字段,ip(记录IP地址)和time(记录提交时间),建议加上,非常有用。<input type="hidden" name="dede_fieldshide" value="ip,time" />
修改后的完整表单代码示例:
<form action="/plus/diy.php?modelid=6" enctype="multipart/form-data" method="post">
<input type="hidden" name="dede_fieldshide" value="ip,time" />
<p>姓名:<input type="text" name="name" id="name" /></p>
<p>电话:<input type="text" name="tel" id="tel" /></p>
<p>留言内容:<textarea name="content" id="content"></textarea></p>
<p><input type="submit" name="submit" value="提交" /></p>
</form>
第五步:后台查看数据
完成以上所有步骤后,你的自定义表单就已经和后台打通了。
- 登录织梦后台。
- 进入【核心】 -> 模型管理】。
- 点击你创建的模型名称(如“在线留言”)。
- 在弹出的页面中,你就可以看到所有通过这个表单提交的数据了,你可以在这里进行审核、删除等操作,就像管理文章一样。
总结与常见问题
- 核心记忆点:栏目 + 内容模型 + 修改
action,这三步是打通前后台的关键。 - 为什么我的数据还是没显示?
- 检查第四步:
action里的modelid是否正确? - 检查字段名:表单里的
name属性(如name="name")是否和后台模型里定义的字段名称完全一致?(注意区分大小写) - 检查数据表:确认数据是否真的写入了我们新创建的附加表(如
dede_addonmsg),而不是旧的dede_diyforms表,可以用phpMyAdmin查看。
- 检查第四步:
- 可以保留默认的自定义表单后台吗?
- 可以,默认的自定义表单后台在【插件】 -> 【自定义表单】里,你可以选择使用默认后台,或者按照本教程使用更强大的内容模型后台,两者是独立的,互不影响,但通常推荐使用内容模型后台,因为功能更统一、更强大。
通过以上步骤,你就可以完美地将织梦自定义表单集成到后台的内容管理体系中了。
