最新公告
  • 欢迎您光临牛气网,本站秉承“用心服务,做好服务”致力为站长提供优质的售后服务!立即加入我们
  • DedeCms5.6自定义模型中的多个联动教程

    之前看过好几个发布关于联动的应用教程帖,但是发现只适合一个联动项目,多个的话就不会联动了,自己按照分类信息里的联动改了一下成功了,现在写个教程给那些也想使用多个联动项目的朋友。(注:这个我只在自定义独立模型中测试过,其他的没有测试)我这里是五个联动项目,如果需要跟多或是少一点的话,可以根据我给的代码修改一下。

    下面我们开始修改:
    第一步:修改include\\taglib\\infolink.lib.php文件

    第一处:

    require_once(DEDEROOT.'/data/enums/infotype.php');
    下面添加
    require_once(DEDEROOT.'/data/enums/自定义联动类别字段名1.php');
    require_once(DEDEROOT.'/data/enums/自定义联动类别字段名2.php');
    require_once(DEDEROOT.'/data/enums/自定义联动类别字段名3.php');
    require_once(DEDEROOT.'/data/enums/自定义联动类别字段名4.php');
    require_once(DEDEROOT.'/data/enums/自定义联动类别字段名5.php');

    第二处:

    function lib_infolink(&$ctag,&$refObj)
    {
    global $dsql,$nativeplace,$infotype,$自定义联动类别字段名1,$自定义联动类别字段名2,$自定义联动类别字段名3,$自定义联动类别字段名4,$自定义联动类别字段名5,$hasSetEnumJs,$cfg_cmspath,$cfg_mainsite;
    global $em_nativeplaces,$em_infotypes,$em_自定义联动类别字段名1s,$em_自定义联动类别字段名2s,$em_自定义联动类别字段名3s,$em_自定义联动类别字段名4s,$em_自定义联动类别字段名5s;??//看清楚,这里后面的个S

    第三处:


    $fields = array('nativeplace'=>'','infotype'=>'','typeid'=>$typeid,
    'channelid'=>$channelid,'linkallplace'=>'','linkalltype'=>'');

    $fields['nativeplace'] = $fields['infotype'] = '';
    后面添加

    $fields = array('自定义联动类别字段名1'=>'','自定义联动类别字段名2’=>'','自定义联动类别字段名3'=>'','自定义联动类别字段名4'=>'','自定义联动类别字段名5'=>'','typeid'=>$typeid,
    'channelid'=>$channelid,'linkallplace'=>'','linkalltype'=>'','linkall自定义联动类别字段名1'=>'','linkall自定义联动类别字段名2‘=>'','linkall自定义联动类别字段名3'=>'','linkall自定义联动类别字段名4'=>'','linkall自定义联动类别字段名5'=>'');

    $fields['自定义联动类别字段名1'] = $fields['自定义联动类别字段名2'] = $fields['自定义联动类别字段名3'] = $fields['自定义联动类别字段名4'] = $fields['自定义联动类别字段名5'] = '';

    第四处:


    $fields['linkalltype'] = "<a href='{$baseurl}plus/list.php?channelid={$channelid}&tid={$typeid}&nativeplace={$nativeplace}'>不限</a>";

    后面添加

    $fields['linkall自定义联动类别字段名1'] = "<a href='{$baseurl}plus/list.php?channelid={$channelid}&tid={$typeid}&自定义联动类别字段名1={$eid}&自定义联动类别字段名2={$自定义联动类别字段名2}&自定义联动类别字段名3={$自定义联动类别字段名3}&自定义联动类别字段名4={$自定义联动类别字段名4}&自定义联动类别字段名5={$自定义联动类别字段名5}'>全部</a>";

    (这里注意了,想要联动这个地方是关键之一,后面的联动字段一定都要有,如果你有增加联动那么这里一定要加全了)

    第五处:

    if(is_array($ctp->CTags))

    上面添加

    if(empty($自定义联动类别字段名1))
    {
    foreach($em_自定义联动类别字段名1s as $eid=>$em)
    {
    if($eid % 500 != 0) continue;
    $fields['自定义联动类别字段名1'] .= " <a href='{$baseurl}plus/list.php?channelid={$channelid}&tid={$typeid}&自定义联动类别字段名1={$eid}&自定义联动类别字段名2={$自定义联动类别字段名2}&自定义联动类别字段名3={$自定义联动类别字段名3}&自定义联动类别字段名4={$自定义联动类别字段名4}&自定义联动类别字段名5={$自定义联动类别字段名5}'>{$em}</a>";
    }
    }
    else
    {
    foreach($em_自定义联动类别字段名1s as $eid=>$em)
    {
    if($eid % 500 != 0) continue;
    if(isset($_GET['自定义联动类别字段名1']))
    {
    $navclass=$_GET['自定义联动类别字段名1'];
    if ($navclass==$eid)
    {
    $navclass=' style=color:#ff0000;font-weight:bold';
    }
    $fields['自定义联动类别字段名1'] .= " <a href='{$baseurl}plus/list.php?channelid={$channelid}&tid={$typeid}&自定义联动类别字段名1={$eid}&自定义联动类别字段名2={$自定义联动类别字段名2}&自定义联动类别字段名3={$自定义联动类别字段名3}&自定义联动类别字段名4={$自定义联动类别字段名4}&自定义联动类别字段名5={$自定义联动类别字段名5}'".$navclass.">{$em}</a>";
    }
    }
    }

    (这里也多联动的关键之一,由于东西太多,我只列出一个,其他的自己添加一下,注意的是在链接也就是a href里面自定义联动类别字段名一定要加全了)

    第二步:修改plus\\list.php 文件

    第一处:

    $infotype = ( (empty($infotype) || !is_numeric($infotype)) ? 0 : $infotype );

    下面加上

    $自定义联动类别字段名1 = ( (empty($自定义联动类别字段名1) || !is_numeric($自定义联动类别字段名1)) ? 0 : $自定义联动类别字段名1 );(多个就复制改名即可)

    第二处:


    if(!empty($infotype)) $cArr['infotype'] = $infotype;

    下面加上

    if(!empty($自定义联动类别字段名1)) $cArr['自定义联动类别字段名1'] = $自定义联动类别字段名1;(多个就复制改名即可)

    第三步:修改include\\arc.sglistview.class.php 文件


    if(!empty($this->searchArr['infotype']))
    {
    if($this->searchArr['infotype'] % 500 ==0 )
    {
    $naddQuery .= " And arc.infotype >= '{$this->searchArr['infotype']}' And arc.infotype < '".($this->searchArr['infotype']+500)."'";
    }
    else
    {
    $naddQuery .= "And arc.infotype = '{$this->searchArr['infotype']}'";
    }
    }

    下面加上

    if(!empty($this->searchArr['jztype']))
    {
    if($this->searchArr['jztype'] % 500 ==0 )
    {
    $naddQuery .= " And arc.jztype >= '{$this->searchArr['jztype']}' And arc.jztype < '".($this->searchArr['jztype']+500)."'";
    }
    else
    {
    $naddQuery .= "And arc.jztype = '{$this->searchArr['jztype']}'";
    }
    }
    (多个就复制改名即可)

    第四步:修改include\\taglib\\infolink.lib.php文件(这个只针对需要二级联动改一级的人用的,如果不需要这么做的跳过)

    这里都注掉
    /*
    $sontype = ( ($househx % 500 != 0) ? $househx : 0 );
    $toptype = ( ($househx % 500 == 0) ? $househx : ( $househx-($membertype%500) ) );
    $fields['househx'] = "<a href='{$baseurl}plus/list.php?channelid={$channelid}&tid={$typeid}&househx={$toptype}&nativeplace={$nativeplace}'><b>{$em_househxs[$toptype]}</b></a> ";

    下级显示不显示
    foreach($em_househxs as $eid=>$em)
    {
    if($eid < $toptype+1 || $eid > $toptype+499) continue;
    if($eid == $househx) {
    $fields['househx'] .= " <b>{$em}</b>";
    }
    else {
    $fields['househx'] .= " <a href='{$baseurl}plus/list.php?channelid={$channelid}&tid={$typeid}&househx={$eid}&nativeplace={$nativeplace}'>{$em}</a>";
    }
    }
    */

    换成

    foreach($em_househxs as $eid=>$em)
    {
    if($eid % 500 != 0) continue;
    if(isset($_GET['househx']))
    {
    $navclass=$_GET['househx'];
    if ($navclass==$eid)
    {
    $navclass=' style=color:#ff0000';
    }
    $fields['househx'] .= " <a href='{$baseurl}plus/list.php?channelid={$channelid}&tid={$typeid}&househx={$eid}&nativeplace={$nativeplace}'".$navclass.">{$em}</a>";
    }
    }

    第五步:模板调用

    [field:linkeall自定义联动类别字段名1/] [field:自定义联动类别字段名1 /] (多个就复制改名即可)

    切记前后一定要加上{dede:infolink}和{/dede:infolink}要不然是调用不出来的。

    1、本站所有资源皆来源于网络和用户自行上传,因此不包括售后和技术,敬请谅解!
    2、本站不保证所提供的源码的准确性、安全性和功能完善性,资源仅用于学习用!
    3、您下载的资源,请务必在24小时内删除,资源仅提供本地测试,请勿商用或者非法用途都与本站无关,一切后果自负!
    4、如发现资源下载不了,或者侵权请及时联系客服或者邮箱admin#niuqi.net,#改为@!
    牛气网 » DedeCms5.6自定义模型中的多个联动教程

    发表评论

    • 72会员总数(位)
    • 4096资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 204稳定运行(天)

    牛气网NIUQI.NET站长源码平台

    开通SVIP会员 了解详情