DedeCms5.6自定义模型中的多个联动教程

DedeCms5.6自定义模型中的多个联动教程,第1张

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

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

下面我们开始修改:
第一步:修改include aglibinfolink.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'=>'','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里面自定义联动类别字段名一定要加全了)

第二步:修改plusList.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;(多个就复制改名即可)

第三步:修改includearc.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 aglibinfolink.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}要不然是调用不出来的。

下载修改过的文件:dedezdymx_veryhuo.com.rar

总结

以上是内存溢出为你收集整理的DedeCms5.6自定义模型中的多个联动教程全部内容,希望文章能够帮你解决DedeCms5.6自定义模型中的多个联动教程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zz/1002363.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存