织梦dedecms同时调用一级分类、二…

一、如何才能将DEDECMS分类信息中所有的栏目,包括一级和二级全部都调用出来呢。其实,通过dedecms的 channelartilist 标签是完全可以实现的,下面就是调用代码:

{dede:channelartlist typeid='1,10,24,35,51,56' //手动把一级栏目的id写好
{dede:type}[field:typename/]{/dede:type}
  • {dede:channel type='son' noself='yes'}
  • [field:typename/]
  • {/dede:channel}
{/dede:channelartlist}

通过上面的标签可以调用出所有的栏目
二。直接上图:
dede同时调用一级分类、二级分类
调用方法:

{dede:channelartlist typeid='2'}
{dede:field name='typename'/}
{dede:channel type='son' noself='yes'}
[field:typename/]
{/dede:channel}
{/dede:channelartlist}

此方法直接使用会出现一个问题:当其中一个分类没有子分类的时候,会在其子分类的位置显示出所有的一级分类
解决办法:去掉include/taglib/channel.lib.php中以下内容即可解决

//如果用子栏目模式,当没有子栏目时显示同级栏目
if($type=='son' && $reid!=0 && $totalRow==0)
{
$sql "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
FROM `#@__arctype` WHERE reid='$reid' And ishidden<>1 order by sortrank asc limit 0, $line ";
$dsql->SetQuery($sql);
$dsql->Execute();
}

—————————————————————————————————————————————————————————以下方法在5.6版本适用,后来升级到5.7V后发现用不了,具体不知道啥原因,有兴趣的朋友可以研究一下:
在\include\channelunit.func.php文件底部添加如下代码:

//树形栏目补充,获取二级,san级,四级栏目列表
function getProductTree($typeid)
{
$linkList "";
$dsql new DedeSql(false);
$dsql->SetQuery("select ID,typedir,typename,isdefault from #@__arctype where reID '$typeid' order by sortrank");
$dsql->Execute();
while($row=$dsql->GetObject())
{
$typelink GetTypeUrl($row->id,MfTypedir($row->typedir),$row->isdefault,$row->defaultname,$row->ispart,$row->namerule2,$row->moresite,$row->siteurl,$row->sitepath);
$linkList .= "\ntype\">".$row->typename."\n\n";
$linkList .= getSonClass($row->ID);
}
$dsql->Close();
return $linkList;
}
//获得小类栏目链接
function getSonClass($parentid)
{
$linkList "";
$dsql new DedeSql(false);
$dsql->SetQuery("Select ID,typedir,typename,isdefault From #@__arctype where reID='$parentid' order by sortrank");
$dsql->Execute($parentid);
while($row=$dsql->GetObject($parentid))
{
$typelink GetTypeUrl($row->id,MfTypedir($row->typedir),$row->isdefault,$row->defaultname,$row->ispart,$row->namerule2,$row->moresite,$row->siteurl,$row->sitepath);
$linkList .= "".$row->typename."\n";
$linkList .= getSonClass2($row->ID);
}
return $linkList;
}
function getSonClass2($parentid)
{
$linkList "";
$dsql new DedeSql(false);
$dsql->SetQuery("Select ID,typedir,typename,isdefault From #@__arctype where reID='$parentid' order by sortrank");
$dsql->Execute($parentid);
while($row=$dsql->GetObject($parentid))
{
$typelink GetTypeUrl($row->id,MfTypedir($row->typedir),$row->isdefault,$row->defaultname,$row->ispart,$row->namerule2,$row->moresite,$row->siteurl,$row->sitepath);
$linkList .= "".$row->typename."\n";
$linkList .= getSonClass3($row->ID);
}
return $linkList;
}
function getSonClass3($parentid)
{
$linkList "";
$dsql new DedeSql(false);
$dsql->SetQuery("Select ID,typedir,typename,isdefault From #@__arctype where reID='$parentid' order by sortrank");
$dsql->Execute($parentid);
while($row=$dsql->GetObject($parentid))
{
$typelink GetTypeUrl($row->id,MfTypedir($row->typedir),$row->isdefault,$row->defaultname,$row->ispart,$row->namerule2,$row->moresite,$row->siteurl,$row->sitepath);
$linkList .= "".$row->typename."\n";
}
return $linkList;
}

模板里用
{dede:channel function=’getProductTree(2)’}{/dede:channel}
调用即可。这里getProductTree(2)中的 是产品展示的栏目ID。如果你的是其他的,请作相应修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Longsir_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值