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

2019-10-24,,

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

第一种自定义函数递归法

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

  

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

  /**

    * 取出所有分类

    * @param     int   $channel  频道ID

    * @return    string  www.dede58.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 .= "<ul>\r\n";

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

                       {

                                $id = $row['id'];

                                $typename = $row['typename'];

                                $typelink = GetOneTypeUrlA($row);

  

                                $result .= "       <li>\r\n";

                                $result .= "                <a href='{$typelink}' target='_blank'>{$typename}</a>\r\n";

                                getalltype($id,$line);

                                $result .= "       </li>\r\n";

                       }

            $result .= "</ul>\r\n";

             }

             return $result;

    }

 

前台模板调用标签

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

 

第二种标签嵌套法

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

<ul>

             {dede:channelartlist row=7 typeid=top}

             <!-- 顶级 -->

             <li>

                       <a href="{dede:field.typeurl/}" >{dede:field name='typename'/}</a>

                       <ul>

                       {dede:channel type=son noself=yes}

                       <!-- 二级 -->

                       <li>

                       <a href="[field:typeurl/]"  title="[field:typename/]">[field:typename/]</a>

                       <ul>

    <!-- 三级 -->

    [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

    <li><a href="{$typeurl}">{$typename}</a></li>

    TPL;

    }

    @me = $result;

    [/field:id]

                       </ul>

                       </li>

                       {/dede:channel}

                       </ul>

             </li>   

             {/dede:channelartlist}

    </ul>

 

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

<!-- 三级/四级 -->

    [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 .= "<a href='{$row[typeurl]}'>{$row[typename]}</a>";

             //四级

             $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 .= "<a href='{$nrow[typeurl]}'>{$nrow[typename]}</a>";

             }

    }

    @me = $result;

    [/field:id]

《dedecms织梦调用三级四级无限级栏目教程.doc》

下载本文的Word格式文档,以方便收藏与打印。