首页  »  站长资讯  »  网站优化

dedecms织梦调用三级四级无限级栏目教程

2022/11/30 08:34     创新屋收录网     已浏览341次


调用三级四级无限级栏目效果图



dedecms织梦调用三级四级无限级栏目教程





第一种自定义函数递归法

适用于前端简单样式用户,在 include/extend.func.php 最下面添加   

  /**

    * 取出所有分类

    * @param     int   $channel  频道ID

    * @return    string  www.80zhan.com织梦模板下载

    * 调用{dede:global.getalltype function='getalltype()'/}

    */

 

    function getalltype($channel=0,$line=10)

    {

             $line = empty($line) ? 10 : $line;

             global $dsql,$result;

            

             $dsql->SetQuery("SELECT id,typename,typenamedir,typelitpic,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath

                FROM `dede_arctype` WHERE reid='$channel' And ishidden<>1 order by sortrank asc limit 0, $line ");

             $dsql->Execute($channel);

             if($dsql->GetTotalRow($channel)>0)

             {

                       $result .= "

    rn";

                           while($row = $dsql->GetArray($channel))

                           {

                                    $id = $row['id'];

                                    $typename = $row['typename'];

                                    $typelink = GetOneTypeUrlA($row);

     

                                    $result .= "      
  • rn";

                                    $result .= "                {$typename}rn";

                                    getalltype($id,$line);

                                    $result .= "      
  • rn";

                           }

                $result .= "
rn";

             }

             return $result;

    }

前台模板调用标签

{dede:global.getalltype function='getalltype()'/}

第二种标签嵌套法

适用于只调用出一级、二级、三级、四级的用户,直接在模板里写   



                 {dede:channelartlist row=7 typeid=top}

                

                


  •                        {dede:field name='typename'/}

                          


                             {dede:channel type=son noself=yes}

                            

                            


    •                        [field:typename/]

                            


           

            [field:id runphp=yes]

            global $dsql;

            $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath FROM `dede_arctype`

            WHERE reid=@me And ishidden<>1 order by sortrank asc limit 0,10";

            $dsql->SetQuery($sql);

            $dsql->Execute('t');

            $result = '';

            while($row = $dsql->GetArray('t'))

            {

                $typename = $row['typename'];

                $typeurl = GetOneTypeUrlA($row);

            $result .= <<< TPL

           
      • {$typename}


      •     TPL;

            }

            @me = $result;

            [/field:id]

                              


                            


    •                        {/dede:channel}

                            


                
  •   

                 {/dede:channelartlist}

       


上面的是输出到三级栏目,如果需要四级栏目可以这样写   



    [field:id runphp=yes]

    global $dsql;

    $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath FROM `dede_arctype`

    WHERE reid=@me And ishidden<>1 order by sortrank asc limit 0,10";

    $dsql->SetQuery($sql);

    $dsql->Execute('t');

    $result = '';

    while($row = $dsql->GetArray('t'))

    {

        $row['typeurl'] = GetOneTypeUrlA($row);

             $result .= "{$row[typename]}";

             //四级

             $nsql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath

             FROM `dede_arctype` WHERE reid=$row[id] And ishidden<>1 order by sortrank asc limit 0,10";

             $dsql->SetQuery($nsql);

             $dsql->Execute('n');

             while($nrow = $dsql->GetArray('n'))

             {

                       $nrow['typeurl'] = GetOneTypeUrlA($nrow);

                       $result .= "{$nrow[typename]}";

             }

    }

    @me = $result;

    [/field:id]