"景先生毕设|www.jxszl.com

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

2022-10-28 23:37编辑: www.jxszl.com景先生毕设
以前在用到V.VII无限级栏目列表菜单时下载了网上的资料都未成功,因此我参考网上及dedecms本身的channel.lib.php及cattree.lib.php制作了调用标签.
I..在include aglib建立randomartlist.lib.php
内容如下:

 更多精彩就在: 51免费论文网|www.jxszl.com 
>if(!defined(DEDEINC))exit(RequestError!);

functionlib_randomartlist(&$ctag,&$refObj)
{
global$dsql;
//属性处理
//topid指定顶级树id,指定后,前I.个属性将无效
$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
{

$rowII=$dsql->GetOne("SELECTreid,topid,channeltype,ispartFROM`dede_arctype`WHEREreid=$topid");
if(!is_array($rowII))
{
$typeid=$reid=$topid=$channeltype=$ispart=0;
}else{
$reid=$rowII[reid];
$channeltype=$rowII[channeltype];
$ispart=$rowII[ispart];
$typepid=$rowII[id];
}
}
//调用Typeid
if(!empty($topid))
{
$topQuery="SELECTid,typename,typedir,isdefault,ispart,defaultname,nameruleII,moresite,siteurl,sitepathFROM`dede_arctype`WHEREreid=$topidAndishidden<>I.orderbysortrankasc";
}
$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]}
  • ";
    }
    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,nameruleII,moresite,siteurl,sitepathFROM`dede_arctype`WHEREreid={$id}Andishidden<>I.orderbysortrankasc";
    $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]}
  • ";
    }

    randomartlistSon($row[id],$typeid,$currentstyle,$thisv);
    }
    if($thisv!=)$revalue.="
      $thisv
    ";
    }
    II.调用方式:


      {dede:randomartlisttopid=I.IIcurrentstyle="
    • ~typename~
    • "}
    • {dede:fieldname=typename/}

    • {/dede:randomartlist}


    III.css方式:
    .alist{}
    /*第I.层修饰*/
    .alistul{}
    .alistulli{}
    .alistullia{}
    .alistullia:hover,.alistulli.thisclass{}
    /*第II层修饰*/
    .alistulliul{}
    .alistulliulli{}
    .alistulliullia{}
    .alistulliullia:hover,.alistulliulli.thisclass{}

    原文链接:http://www.jxszl.com/biancheng/dedecms/72928.html