织梦dedecms5.7 无限级多级栏目菜单调用方法
发布时间:2020-12-14 04:58:25 所属栏目:Dedecms 来源:网络整理
导读:?以前在用到5.7无限级栏目列表菜单时下载了网上的资料都未成功,因此我参考网上及dedecms本身的channel.lib.php及cattree.lib.php制作了调用标签。 1、在includetaglib建立randomartlist.lib.php ???内容如下: ?? if(!defined('DEDEINC'))?exit('Request?Er
?以前在用到5.7无限级栏目列表菜单时下载了网上的资料都未成功,因此我参考网上及dedecms本身的channel.lib.php及cattree.lib.php制作了调用标签。 1、在includetaglib建立randomartlist.lib.php ???内容如下: ?? if(!defined('DEDEINC'))?exit('Request?Error!'); function?lib_randomartlist(&$ctag,?&$refObj) { ????global?$dsql; ????//属性处理 ?????//topid?指定顶级树?id?,指定后,前一个属性将无效 ????$attlist="typeid|0,showall|,currentstyle|,cacheid|"; ????FillAttsDefault($ctag->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("SELECT?reid,topid,channeltype,ispart?FROM?`dede_arctype`?WHERE?reid='$topid'?"); ????????if(!is_array($row2)) ????????{ ????????????$typeid?=?$reid?=?$topid?=?$channeltype?=?$ispart?=?0; ????????}?else?{ ????????????$reid?=?$row2['reid']; ????????????$channeltype?=?$row2['channeltype']; ????????????$ispart?=?$row2['ispart']; ????????????$typepid?=?$row2['id']; ????????} ????} ????//调用Typeid ????if(?!empty($topid)?) ????{ ????????$topQuery?=?"SELECT?id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath?FROM?`dede_arctype`?WHERE?reid='$topid'?And?ishidden<>1?order?by?sortrank?asc"; ????} ??$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?.=?"???? ??} ??if($cacheid?!='')?{ ????????WriteCacheBlock($cacheid,?$revalue); ??} ????return?$revalue; } function?randomartlistSon($id,&$revalue) { ????global?$dsql; ????$query?=?"SELECT?id,sitepath?FROM?`dede_arctype`?WHERE?reid='{$id}'?And?ishidden<>1?order?by?sortrank?asc"; ????$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~",$linkOkstr); ????????????????????$thisv?.=?$linkOkstr; ????????????????} ????????????????else ????????????????{ ??????????????????$thisv?.=?"???? ????randomartlistSon($row['id'],?$thisv); ??} ??if($thisv!='')?$revalue?.=?"????
2、调用方式: ????? ??????????
??????.alist{} ??????/*第一层修饰*/ ?????.alist?ul?{} ?????.alist?ul?li?{} ?????.alist?ul?li?a{} ?????.alist?ul?li?a:hover,.alist?ul?li?.thisclass{} ??????/*第二层修饰*/ ?????.alist?ul?li?ul{} ?????.alist?ul?li?ul?li{} ?????.alist?ul?li?ul?li?a{} ?????.alist?ul?li?ul?li?a:hover,.alist?ul?li?ul?li??.thisclass{} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |