在 DedeCMS(织梦CMS)中,调用自定义表单并实现分页功能,通常需要结合 datalist 标签和分页类 datalistcp 来实现,以下是详细的步骤和代码示例:

(图片来源网络,侵删)
创建自定义表单
确保你已经通过后台创建了自定义表单(如 dede_addonforms 表),并记录表单的 typeid(表单ID)。
编写分页代码
在模板文件中(如 list_diyform.htm),使用以下代码:
<?php
require_once(dirname(__FILE__)."/../include/common.inc.php");
require_once(DEDEINC.'/datalistcp.class.php');
// 表单ID(替换为你的表单ID)
$formid = 1;
// 每页显示条数
$pagesize = 10;
// 查询SQL(根据实际表结构调整)
$sql = "SELECT * FROM `#@__addonforms` WHERE typeid='$formid' ORDER BY id DESC";
// 初始化分页类
$dlist = new DataListCP();
$dlist->pageSize = $pagesize;
$dlist->SetParameter("formid", $formid); // 传递参数(可选)
$dlist->SetSource($sql);
// 显示分页列表
$dlist->Display();
// 输出分页链接
echo $dlist->GetPageList();
?>
模板中调用字段
在分页模板中(如 templets/default/list_diyform.htm),使用以下标签循环输出字段:
{dede:datalist}
<ul>
<li>姓名:{dede:field.name/}</li>
<li>电话:{dede:field.tel/}</li>
<li>提交时间:{dede:field.senddate function="MyDate('Y-m-d H:i',@me)"/}</li>
</ul>
{/dede:datalist}
<!-- 分页导航 -->
<div class="pagination">
{dede:pagelist listsize='5' listitem='info,index,end,pre,next,pageno'/}
</div>
注意事项
- 表名和字段名:替换
#@__addonforms和字段名(如name、tel)为你的实际表单结构。 - 权限控制:如果需要限制访问,添加登录验证:
if(!$cfg_ml->IsLogin()) { ShowMsg("请先登录", "/member/login.php"); exit(); } - 安全过滤:对用户输入的参数(如
formid)进行过滤:$formid = intval(preg_replace("/[^\d]/", '', $formid));
效果示例
- 分页导航会显示类似:
首页 上一页 1 2 3 下一页 末页 - 每页显示10条记录(可调整
$pagesize)。

(图片来源网络,侵删)
