详解织梦dedecms5.7 无限级多级栏目菜单调用方法


以前在用到5.7无限级栏目列表菜单时下载了网上的资料都未成功,因此我参考网上及dedecms本身的channel.lib.php及cattree.lib.php制作了调用标签。

1、在include\taglib建立randomartlist.lib.php

内容如下:

CAttribute->Items,$attlist);extract($ctag->CAttribute->Items,EXTR_SKIP);$revalue='';//读取固定的缓存块$cacheid=trim($cacheid);if($cacheid!=''){$revalue=GetCacheBlock($cacheid);if($revalue!='')return$revalue;}//如果属性里没指定栏目id,从引用类里获取栏目信息if(empty($typeid)){if(isset($refObj->TypeLink->TypeInfos['id'])){$typeid=$refObj->TypeLink->TypeInfos['id'];$reid=$refObj->TypeLink->TypeInfos['reid'];$topid=$refObj->TypeLink->TypeInfos['topid'];}else{$typeid=0;}}else{$row2=$dsql->GetOne("SELECTreid,topid,channeltype,ispartFROM`dede_arctype`WHEREreid='$topid'");if(!is_array($row2)){$typeid=$reid=$topid=$channeltype=$ispart=0;}else{$reid=$row2['reid'];$channeltype=$row2['channeltype'];$ispart=$row2['ispart'];$typepid=$row2['id'];}}//调用Typeidif(!empty($topid)){$topQuery="SELECTid,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepathFROM`dede_arctype`WHEREreid='$topid'Andishidden<>1orderbysortrankasc";}$dsql->Execute('t',$topQuery);while($row=$dsql->GetArray('t')){$row['typelink']=GetOneTypeUrlA($row);//处理同级栏目中,当前栏目的样式if($row['id']==$typeid&&$currentstyle!=''){$linkOkstr=$currentstyle;$linkOkstr=str_replace("~rel~",$row['rel'],$linkOkstr);$linkOkstr=str_replace("~id~",$row['id'],$linkOkstr);$linkOkstr=str_replace("~typelink~",$row['typelink'],$linkOkstr);$linkOkstr=str_replace("~typename~",$row['typename'],$linkOkstr);$revalue.=$linkOkstr;}else{$revalue.="{$row['typename']}\n";}randomartlistSon($row['id'],$typeid,$currentstyle,$revalue);}if($cacheid!=''){WriteCacheBlock($cacheid,$revalue);}return$revalue;}functionrandomartlistSon($id,$typeid,$currentstyle,&$revalue){global$dsql;$query="SELECTid,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepathFROM`dede_arctype`WHEREreid='{$id}'Andishidden<>1orderbysortrankasc";$dsql->Execute($id,$query);$thisv='';while($row=$dsql->GetArray($id)){$row['typelink']=GetOneTypeUrlA($row);//处理同级栏目中,当前栏目的样式if($row['id']==$typeid&&$currentstyle!=''){$linkOkstr=$currentstyle;$linkOkstr=str_replace("~rel~",$row['rel'],$linkOkstr);$linkOkstr=str_replace("~id~",$row['id'],$linkOkstr);$linkOkstr=str_replace("~typelink~",$row['typelink'],$linkOkstr);$linkOkstr=str_replace("~typename~",$row['typename'],$linkOkstr);$thisv.=$linkOkstr;}else{$thisv.="{$row['typename']}\n";}randomartlistSon($row['id'],$typeid,$currentstyle,$thisv);}if($thisv!='')$revalue.="\n$thisv\n";}

2、调用方式:

{dede:randomartlisttopid='12'current}<ahref="{dede:fieldname='typeurl'/}"{/dede:randomartlist}

3、css方式:

.alist{}/*第一层修饰*/.alistul{}.alistulli{}.alistullia{}.alistullia:hover,.alistulli.thisclass{}/*第二层修饰*/.alistulliul{}.alistulliulli{}.alistulliullia{}.alistulliullia:hover,.alistulliulli.thisclass{}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

安卓应用乾坤大挪移,Ubuntu上的搬运工:ARChon

Google最近发布了首批能在Chrome OS本地运行的安卓应用集,通过‘安卓运行时’扩展完成了该壮举。现在,一位开发者已经指明了将安卓应用带入桌面版Chrome的路。弗拉德·菲利波夫的chromeos-apk脚本和ARChon安卓运行时扩展手拉手一起开展工...
ubuntu安卓应用ARChon

Debian如何安装闭源软件包有哪些方法

在系统操作中,闭源软件和开源软件是相对的,总有人拿这2个比较优劣,有时需要在系统中安装鼻渊软件包,下面小编就给大家介绍下Debian安装闭源软件包的方法。  Debian是一个拥有48,000软件包的发行版。 这些软件包被分为三类: main, contrib...
ubuntuDebian软件包闭源

服务器安全狗和网站安全狗有什么区别?会不会冲突?

网站安全狗主要保护服务器上网站的安全,主要功能包括网马挂马扫描、SQL注入防护,CC攻击防护,资源保护等。图.网站安全狗服务器安全狗主要保护服务器免遭恶意攻击,主要功能包括DDOS防火墙,ARP防火墙,远程桌面守护,端口保护,网络监控等。图.服务器安全狗这两个...
服务器安全狗网站安全狗服务器安全

Log4Shell和JNDI注入的基本常识和目前进展

最新爆发的Log4j2安全远程漏洞,又称“Log4Shell”,让整个互联网陷入了威胁之中,大量企业和Java项目都在紧锣密鼓的升级更新补丁,还有很多安全研究人员在研究复现和利用以及防范方法,我们今天就来说说相关的常识和进展。Log4Shell漏洞(正式编号C...
漏洞服务器安全Log4Shelljndi