dede自定义表单内容如何调用?

99ANYc3cd6
预计阅读时长 26 分钟
位置: 首页 DEDE建站 正文
  1. 创建自定义表单:在后台创建一个表单,并设置好字段。
  2. 在前台页面展示表单:让用户可以填写并提交这个表单。
  3. 调用并展示已提交的数据:在需要的地方(如列表页、详情页)调用数据库中已存储的表单数据。

第一步:创建自定义表单

这是所有操作的基础,你需要先在 DedeCMS 后台定义好你的表单结构。

dede自定义表单内容调用
(图片来源网络,侵删)
  1. 登录 DedeCMS 后台

  2. 进入“核心” -> “频道模型” -> “自定义表单”

  3. 点击 “增加自定义表单”

  4. 填写表单信息:

    dede自定义表单内容调用
    (图片来源网络,侵删)
    • 表单名称:给你的表单起一个名字,在线报名”、“留言反馈”等,这个名字会生成对应的数据库表 dede_addonxxxx 是数字)。
    • 表单提示:在表单上方给用户的说明文字。
    • 默认表单模板:可以留空,我们通常直接在前台页面写 HTML。
    • 列表模板:用于展示已提交数据的列表页模板。
    • 发布模板:用于展示单条已提交数据的详情页模板(这个用得相对较少)。
    • 返回页网址:用户提交成功后跳转的页面,可以留空,则会显示默认的成功提示。
  5. 点击“保存”,此时你已经创建了一个空的表单。

  6. 添加表单字段

    • 保存后,你会进入字段管理界面,点击 “增加字段”
    • 字段名:这是数据库中的字段名,只能用英文、数字和下划线,name, tel, content
    • 字段提示:在前台表单中显示给用户的标签,您的姓名”、“联系电话”、“留言内容”。
    • 字段类型:根据你的需求选择,常用的有:
      • text:单行文本
      • textarea:多行文本
      • select:下拉选择
      • radio:单选按钮
      • checkbox:复选框
      • datetime:时间
    • 字段参数:对于 select, radio, checkbox 类型,在这里填写选项,用 "" 分隔,选项一|选项二|选项三
    • 是否显示:通常选择“是”,让这个字段在前台和后台都能看到。
    • 其他选项:根据需要设置,如是否为必填项等。
    • 点击“保存”

重复此步骤,添加所有你需要的字段(如姓名、电话、邮箱、留言内容等)。

示例:我们创建一个名为“在线报名”的表单,包含 name (姓名), tel (电话), course (意向课程), qq (QQ号) 四个字段。

dede自定义表单内容调用
(图片来源网络,侵删)

第二步:在前台页面展示表单并提交

创建好表单后,你需要在前台页面放置一个表单,让用户可以填写并提交数据。

  1. 进入“模板” -> “默认模板管理”
  2. 找到你想要放置表单的模板文件(index.htm, about.htm 等),点击“修改”。
  3. 在模板的适当位置,插入以下 HTML 代码,DedeCMS 提供了便捷的标签 {dede:form} 来生成表单。
<h2>在线报名</h2>
{dede:form name='myform' method='post'}
    <input type="hidden" name="dopost" value="send" />
    <input type="hidden" name="aid" value="0" />
    <input type="hidden" name="mid" value="1" />
    <p>
        <label for="name">姓名:</label>
        <input type="text" name="name" id="name" class="intext" />
    </p>
    <p>
        <label for="tel">电话:</label>
        <input type="text" name="tel" id="tel" class="intext" />
    </p>
    <p>
        <label for="course">意向课程:</label>
        <select name="course" id="course">
            <option value="">请选择</option>
            <option value="PHP开发">PHP开发</option>
            <option value="网页前端">网页前端</option>
            <option value="UI设计">UI设计</option>
        </select>
    </p>
    <p>
        <label for="qq">QQ号:</label>
        <input type="text" name="qq" id="qq" class="intext" />
    </p>
    <p>
        <label for="msg">留言内容:</label>
        <textarea name="msg" id="msg" rows="5" cols="50"></textarea>
    </p>
    <p>
        <input type="submit" name="submit" value="提交报名" class="btn" />
    </p>
{/dede:form}

代码解析

  • {dede:form name='myform' ...}name 属性对应你第一步创建的自定义表单名称。
  • name="dopost" value="send":固定写法,表示执行“发送”操作。
  • name="aid" value="0"aid 是附加表ID,新创建的表单通常是0,如果不确定,可以在后台“自定义表单”列表中查看你的表单对应的 aid
  • name="mid" value="1"mid 是会员模型ID,1代表游客,如果需要会员登录后才能提交,可以修改此处。
  • name="name", name="tel" 等:这里的 name 属性必须和你第一步在后台设置的“字段名”完全一致。
  • 提交后,数据会自动保存到 dede_addonxx 表中(xx 是你的自定义表单ID)。

第三步:调用并展示已提交的数据

这是核心问题,调用数据主要有两种方式:列表页调用详情页调用

列表页调用(调用多条数据)

通常我们会创建一个专门的页面来展示所有报名信息,baoming.htm

  1. 创建模板文件:在 /templets/default/ 目录下新建一个文件,list_baoming.htm
  2. 编写模板代码:在这个文件中使用 {dede:arclist}{dede:list} 标签来调用数据。

注意:自定义表单的数据存储在附加表中,所以调用时需要指定附加表。

{dede:list pagesize='10' addfields='name,tel,course,qq,msg' channelid='1'}
    <li>
        <strong>姓名:</strong>[field:name /]
        <strong>电话:</strong>[field:tel /]
        <strong>课程:</strong>[field:course /]
        <strong>QQ:</strong>[field:qq /]
        <p>留言:[field:msg /]</p>
        <p class="info">报名时间:[field:pubdate function="MyDate('Y-m-d H:i:s',@me)"/]</p>
    </li>
{/dede:list}
<div class="dede_pages">
    <ul>
        {dede:pagelist listsize='4' iteminfo='共{total}条记录' listitem='info,index,end,pre,next,pageno'}
        </ul>
</div>

代码解析

  • {dede:list ...}:用于调用列表数据。
    • pagesize='10':每页显示10条。
    • addfields='name,tel,course,qq,msg'这是最关键的一步! 这里列出你想要从附加表中调出的所有字段名(用逗号分隔),这些字段必须在第一步中已经定义。
    • channelid='1'这也是关键! channelid 指定了要调用的频道模型ID,自定义表单的 channelid 通常是 1,你可以在后台“频道模型” -> “自定义表单”列表中查看你创建的表单对应的 channelid
  • [field:name /]:调用 addfields 中指定的字段内容。
  • [field:pubdate ...]:调用发布时间,pubdate 是系统自带的字段,所有附加表都有。
  • {dede:pagelist ...}:分页标签,用于生成分页链接。
  1. 生成页面
    • 在后台“生成” -> “更新HTML” -> “更新自定义文档列表页”。
    • 在页面中选择你刚刚创建的模板 list_baoming.htm,并设置好对应的自定义表单,然后点击“更新”即可生成静态页面。

详情页调用(调用单条数据)

如果你想在某个页面显示某一条报名记录的详细信息,可以使用 {dede:arclist}{dede:field} 等标签。

场景:点击列表页中的某条记录,进入一个详情页查看。

  1. 列表页链接:在 list_baoming.htm 中,给每条记录加上链接,并传递一个ID。

    {dede:list addfields='name,tel,course,qq,msg' channelid='1'}
        <li>
            <a href="detail_baoming.php?aid=[field:id/]">查看 [field:name] 的详细信息</a>
        </li>
    {/dede:list}
    • [field:id/]:获取当前记录的ID。
  2. 创建详情页模板:在 /templets/default/ 目录下新建一个文件,detail_baoming.htm

  3. 编写详情页代码:使用 {dede:arclist}{dede:field} 标签来根据URL传递的 aid 参数获取单条数据。

    方法A (推荐 - 使用arclist)

    {dede:arclist addfields='name,tel,course,qq,msg' channelid='1' idlist='~aid~'}
        <h2>报名详情</h2>
        <p><strong>姓名:</strong> [field:name /]</p>
        <p><strong>电话:</strong> [field:tel /]</p>
        <p><strong>意向课程:</strong> [field:course /]</p>
        <p><strong>QQ:</strong> [field:qq /]</p>
        <p><strong>留言内容:</strong></p>
        <div>[field:msg /]</div>
        <p class="info">报名时间:[field:pubdate function="MyDate('Y-m-d H:i:s',@me)"/]</p>
    {/dede:arclist}
    • idlist='~aid~'~aid~ 是一个特殊变量,DedeCMS会自动将其替换为URL中 aid= 后面的值,这样就实现了动态获取单条数据。

    方法B (使用field标签)

    {dede:field name='body'/}  <!-- 这个通常用不到,除非你在后台设置了发布模板 -->
    <!-- 更常用的方式是直接通过SQL查询,但需要一定的PHP知识 -->
    <!-- 在模板中直接写PHP不推荐,可以通过自定义标签实现 -->
  4. 生成页面:由于详情页是动态的(根据 aid 参数变化),通常不需要手动生成静态页面,当用户访问 detail_baoming.php?aid=123 时,DedeCMS会动态解析并显示ID为123的记录。


总结与注意事项

  1. 字段名一致:前台表单的 name 属性、后台的“字段名”、模板中调用的 [field:xxx] 必须完全一致。
  2. channelid 是关键:调用自定义表单数据时,channelid 通常为 1,请务必在后台确认你的表单对应的 channelid
  3. addfields 是关键:在 {dede:list}{dede:arclist} 中,必须用 addfields 指定要从附加表中调出的字段。
  4. 数据安全:直接在前台展示用户提交的数据(如QQ、电话)有潜在的安全风险,请确保你的网站有良好的访问控制,或者对展示内容进行过滤。
  5. 后台管理:所有提交的数据都可以在后台“核心” -> “内容发布” -> “自定义表单管理”中查看、删除。

通过以上步骤,你就可以灵活地在 DedeCMS 中创建表单并调用展示其内容了。

-- 展开阅读全文 --
头像
Linux下C语言编程环境如何快速搭建与配置?
« 上一篇 02-07
织梦首页不生成html
下一篇 » 02-07
取消
微信二维码
支付宝二维码

目录[+]