上山打老虎 发表于 2021-9-1 11:54:10

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

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



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


/**
    * 取出所有分类
    * @param   int   $channel频道ID
    * @return    stringwww.dedeyuan.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>
";
                     while($row = $dsql->GetArray($channel))
                     {
                              $id = $row['id'];
                              $typename = $row['typename'];
                              $typelink = GetOneTypeUrlA($row);

                              $result .= "       <li>
";
                              $result .= "                <a href='{$typelink}' target='_blank'>{$typename}</a>
";
                              getalltype($id,$line);
                              $result .= "       </li>
";
                     }
            $result .= "</ul>
";
             }
             return $result;
    }
前台模板调用标签


{dede:global.getalltype function='getalltype()'/}
第二种标签嵌套法

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


<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=""title=""></a>
                     <ul>
    <!-- 三级 -->
   
    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;
   
                     </ul>
                     </li>
                     {/dede:channel}
                     </ul>
             </li>   
             {/dede:channelartlist}
    </ul>
上面的是输出到三级栏目,如果需要四级栏目可以这样写


<!-- 三级/四级 -->
   
    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}'>{$row}</a>";
             //四级
             $nsql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
             FROM `dede_arctype` WHERE reid=$row 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}'>{$nrow}</a>";
             }
    }
    @me = $result;
   

文档来源:网络转载 http://www.adminbuy.cn/dedecmsjc/9226.html
页: [1]
查看完整版本: dedecms织梦调用三级四级无限级栏目教程