分享经验 版主:论坛审计组
迅睿下载列表页+图形验证码表单验证+邮件通知功能分享
类型:迅睿框架 更新时间:2026-05-26 16:59:31 添加自定义字段

迅睿CMS网站资料下载列表页,点击资料,弹出自定义图形验证码表单。通过则发送邮件+下载。


分享给有需要的运营朋友:


  1. 创建表单,表单系统(没有去官方下载插件,免费)-进入-创建表单,如资料申请zlsq

  2. 添加自定义字段:你要让用户填的信息,基本都是text文本字段


    3. 创建好表单点击修改:通知提醒-/config/notice/email/form_email_zlsq.html-根据系统出现的通知模板,去对应的目录创建form_email_zlsq.html,


<!DOCTYPE html>

<html>

<head>

    <meta charset="utf-8">

    <title>【资料申请通知】</title>

</head>

<body>

系统于{dr_date($sys_time)}自动读取了以下用户留言信息,请查阅~<br/>

IP: {$sys_ip}<br/>

{$ip_address}

<p></p>


资料标题:{$title}<br/>

公司名:{$co}<br/>

姓名:{$xm}<br/>

联系号码:{$telnum}<br/>

下载地址:{$url}<br/>


<br/>

<br/>

来自:[您的网站名称]

</body>

</html>


 4.不用写自定义控制器,利用迅睿原生表单,直接在列表页前端干就行


<html><body>

<div class="news">    <div class="w1200">      <ul class="news-list">        {module module=article catid=$catid num=8 order=updatetime page=1 return=t}        <li>            <!-- ===== 核心1:用 data 属性传参,避免 onclick 内联特殊字符报错 ===== -->            <a href="javascript:;" class="zlsq-link clearfix" data-file="{dr_down_file($t.fjdown)}" data-title="{$t.title}">            <div class="img">              <div class="img-vertical">                <div class="img">                  <img src="{dr_get_file($t['thumb'])}" alt="{$t.title}" class="transition"/>                </div><i></i>              </div>            </div>            <div class="text">              <div class="tit overf">{$t.title}</div>              <div class="des">{dr_strcut($t.description, 80)} ...</div>            </div>          </a>        </li>        {/module}      </ul>      <div class="page">{$pages_t}</div>    </div>  </div>  <!-- ===== 资料申请弹窗 ===== -->  <div class="shade" id="zlsqShade"></div>  <div class="fixed-pop offer-pop" id="zlsqPop">    <div class="content">      <div class="close" onclick="closeZlsqPop()"></div>      <div class="con">        <div class="tit">资料下载申请</div>        {php extract(dr_get_form_post_value('zlsq'))}        <form action="{$post_url}" method="post" id="zlsqForm">          {$form}          <!-- ===== 核心2:title 是系统必填字段,zlbt(如有扩展需求)可选保留 ===== -->          <input type="hidden" name="data[title]" id="down_title">          <input type="hidden" name="data[url]" id="down_file">          <div class="box clearfix">            <div class="left">              <div class="row clearfix">                <div class="in">                  <input type="text" name="data[co]" placeholder="公司名称(选填)" />                </div>                <div class="in">                  <input type="text" name="data[xm]" placeholder="您的姓名(选填)" />                </div>              </div>              <div class="row clearfix">                <div class="in"><span>*</span>                  <input type="tel" name="data[telnum]" placeholder="手机号码(必填)" maxlength="11" oninput="this.value=this.value.replace(/\D/g,'')">                </div>              </div>              <div class="row clearfix">                <div class="input-group">                  <input type="text" autocomplete="off" placeholder="验证码" name="code">                  <img class="fc-code" onclick="this.src='/index.php?s=api&c=api&m=captcha&'+Math.random();" src="/index.php?s=api&c=api&m=captcha">                </div>              </div>            </div>            <div class="right">              <span>资料<br/>下载</span>              <input type="button" onclick="submitZlsqForm()" value="确认下载" />            </div>          </div>        </form>        <div class="box-text"><i>[品牌名]</i><span>[行业定位]</span><em>免费咨询 丨 {dr_site_value('lxdh')}</em></div>      </div>    </div>  </div>  {template "info_footer.html"}</div><!-- ===== 核心3:完整 JS 逻辑 ===== --><script>var zlsqDownUrl = '';// 【核心】用 data 属性 + 事件委托,彻底避免 onclick 内联传参的 JS 语法错误$(document).on('click', '.zlsq-link', function(e) {    e.preventDefault();    var url = $(this).attr('data-file');    var title = $(this).attr('data-title');    openZlsqPop(url, title); });// 打开弹窗function openZlsqPop(url, title) {    zlsqDownUrl = url;    $('#down_file').val(url);      // 下载地址 → data[url]    $('#down_title').val(title);   // 资料标题 → data[title]    $('#zlsqShade, #zlsqPop').show();    $('.fc-code').click();         // 刷新验证码}// 关闭弹窗function closeZlsqPop() {    $('#zlsqShade, #zlsqPop').hide();    $('#zlsqForm')[0].reset(); }// 【核心】提交表单,兼容迅睿CMS多种JSON响应格式function submitZlsqForm() {    var tel = $('input[name="data[telnum]"]').val().trim();    var code = $('input[name="code"]').val().trim();    // 前端验证    if (!tel || tel.length != 11) {        alert('请输入正确的11位手机号');        return;    }    if (!code) {        alert('请输入验证码');        return;    }    $.ajax({        url: $('#zlsqForm').attr('action'),        type: 'POST',        data: $('#zlsqForm').serialize(),        dataType: 'json',        success: function(res){            // 兼容4种响应格式            var isSuccess = false;            var msg = '';            if (res.code !== undefined && res.code !== '') {                // 格式1: {code: 1, msg: '...'}  — 新版迅睿                isSuccess = (res.code == 1 || res.code === '1');                msg = res.msg || res.info || '';            } else if (res.status !== undefined && res.status !== '') {                // 格式2: {status: 1, info: '...'}  — 旧版迅睿                isSuccess = (res.status == 1 || res.status === '1');                msg = res.info || res.msg || '';            } else if (res.error !== undefined && res.error !== '') {                // 格式3: {error: 0, message: '...'}                isSuccess = (res.error == 0 || res.error === '0');                msg = res.message || res.msg || '';            } else if (res.result !== undefined) {                // 格式4: {result: 'success', ...}                isSuccess = (res.result === 'success' || res.result === true);                msg = res.msg || res.info || '';            }            // 兜底:msg 包含"成功"或"OK"也视为成功            if (!isSuccess && msg && (msg.indexOf('成功') >= 0 || msg.indexOf('OK') >= 0)) {                isSuccess = true;            }            if (isSuccess) {                closeZlsqPop();                alert('提交成功,正在下载!');                if (zlsqDownUrl) {                    window.open(zlsqDownUrl, '_blank');                } else {                    alert('下载地址为空,请联系管理员');                }            } else {                alert('提交失败:' + (msg || '未知错误'));                $('.fc-code').click();            }        },        error: function(xhr, status, error){            alert('网络异常,请重试');            $('.fc-code').click();        }    }); } $(function(){    $('#zlsqShade').click(closeZlsqPop); });</script>


</body></html>