国内外主机
测评及优惠码

织梦模板dedecms5.7 无限级多级栏目菜单调用教程

以前在用到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 .= ”    

  • {$row[‘typename']}
  • n”;
                    }
        randomartlistSon($row[‘id'],$typeid,$currentstyle, $revalue);
      }
      if($cacheid !=”) {
            WriteCacheBlock($cacheid, $revalue);
      }
        return $revalue;
    }
    function randomartlistSon($id,$typeid,$currentstyle,&$revalue)
    {
        global $dsql;
        $query = “SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,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~”,$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:randomartlist topid='12' current}
                       
    • {dede:field name='typename'/}

    •               {/dede:randomartlist}
                 

         

    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{}

    赞(0)
    版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
    文章名称:《织梦模板dedecms5.7 无限级多级栏目菜单调用教程》
    文章链接:https://www.ibytx.com/591.html
    本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

    登录

    找回密码

    注册