温馨提醒

如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢

本文最后更新于2023年8月14日,已超过 180天没有更新

分享2种方法获取织梦所有栏目一级二级三级和无限级栏目输出(下面涉及的表前缀改成你自己的)
1、一级、二级、三级、四级标签嵌套法

<ul>
    {dede:channelartlist row=7 typeid=top}
    <!-- 顶级 -->
    <li class="top">
        <a href="{dede:field.typeurl/}" >{dede:field name='typename'/}</a>
        <ul class="sub">
        {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 `#@__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 .= "<li><a href='{$typeurl}'>{$typename}</a></li>";
                }
                @me = $result;
                [/field:id]
            </ul>
        </li>
        {/dede:channel}
        </ul>
    </li>    
    {/dede:channelartlist}
</ul>

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

<!-- 三级/四级 -->
[field:id runphp=yes]
global $dsql;
$sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath FROM `#@__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 `#@__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]

2、无限级栏目无限分类自定义函数递归法,在 include/extend.func.php 最下面添加

/**
* 取出所有分类
* @param     int   $channel  频道ID
* @return    string
* 调用{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 `#@__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()'/}
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。