星联网络专注帝国CMS二次功能插件开发-精品网站模板站长代码素材

  • 最近更新
  • 模板:33
  • 记录:12641|
  • 插件:52|
  • 工具:4|
  • 代码:8|
  • 评论:0

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

前言

本文主要讲解《织梦dedecms5.7无限级多级栏目菜单调用方法》的详细内容

以前在用到5.7无限级栏目列表菜单时下载了网上的资料都未成功,因此我参考网上及dedecms本身的channel.lib.php及cattree.lib.php制作了调用标签。
1、在include\taglib建立randomartlist.lib.php
内容如下:
<?php
if(!defined('DEDEINC'))exit('RequestError!');

functionlib_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("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'];
}
}
//调用Typeid
if(!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.="<li><ahref='{$row['typelink']}'>{$row['typename']}</a></li>\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.="<li><ahref='{$row['typelink']}'>{$row['typename']}</a></li>\n";
}

randomartlistSon($row['id'],$typeid,$currentstyle,$thisv);
}
if($thisv!='')$revalue.="<ul>\n$thisv</ul>\n";
}

2、调用方式:
<divclass="alist">

<ul>
{dede:randomartlisttopid='12'currentstyle="<li><ahref='~typelink~'class='thisclass'>~typename~</a></li>"}
<li><ahref="{dede:fieldname='typeurl'/}"title="{dede:fieldname='typename'/}">{dede:fieldname='typename'/}</a></li>
{/dede:randomartlist}
</ul>
</div>
3、css方式:
.alist{}
/*第一层修饰*/
.alistul{}
.alistulli{}
.alistullia{}
.alistullia:hover,.alistulli.thisclass{}
/*第二层修饰*/
.alistulliul{}
.alistulliulli{}
.alistulliullia{}
.alistulliullia:hover,.alistulliulli.thisclass{}

本网刊登的文章均仅代表作者个人观点,并不代表本网立场。文中的论述和观点,敬请读者注意判断。

本文地址:http://www.xlkjgs.com/notes/web/11614.html

以上内容由本站整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

星联网络

星联网络是中国最具实战的互联网创业者的知识服务商,这里有互联网行业动态,网络推广,SEO优化,SEM优化,ESC配置,行业经验分型,互联网项目,微信营销、淘宝客赚钱、新媒体营销、京东运营、跨境电商等众多互联网营销知识分享

站长运营站长必备网站运营之道才能长久发展