加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > CMS系统 > Dedecms > 正文

织梦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?.=?"???? ????randomartlistSon($row['id'],$typeid,$currentstyle,?$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、调用方式:
?????
?????????? ??????????????{dede:randomartlist?topid='12'?currentstyle=" ???????????? ?????? 3、css方式:
??????.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{}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读