在网站开发中,调用当前栏目的子栏目列表是一项常见的需求。以下提供了三种方法来实现这一功能,您可以根据具体需求选择合适的方式。

第一种方法:


{dede:sonchannel}  
[field:typename/]  
{/dede:sonchannel}
    

第二种方法:


{dede:channel type='son' noself='yes'}  
  • [field:typename/]
  • {/dede:channel}

    第三种方法:

    
    {dede:channel type='son' typeid=‘栏目ID’ noself='yes'}  
    
  • [field:typename/]
  • {/dede:channel}

    除了调用子栏目列表外,有时还需要统计子栏目的文章数量。为此,您可以在/include/extend.func.php文件的最下方添加以下代码:

    
    /*   
    * 返回符合记录的文章数量   
    * @description DEDE不允许执行子查询,解决栏目下文章统计的问题   
    * @param $level 为真时查询所有子类目   
    * */   
    function getTotalArcByTid($tid, $level=TRUE) {   
    global $dsql;   
    $level==TRUE && $tid = GetSonTypeID($tid);   
    $sql = "SELECT count(id) as total from `dede_archives` where typeid in($tid)";   
    $result = $dsql->GetOne($sql);   
    return $result['total'];   
    }   
    /*   
    * 递归获取符合条件的子栏目   
    * @param $tid 栏目ID   
    * @return string   
    * */   
    function GetSonTypeID($tid)   
    {   
    global $dsql;   
    $dsql->SetQuery("Select id From `dede_arctype` where reid in($tid) And ishidden<>1 order by sortrank");   
    $dsql->Execute($tid);   
    $typeid = '';   
    while($row=$dsql->GetObject($tid))   
    {   
    $typeid .= "{$row->id},";   
    $typeid .= GetSonTypeID($row->id);   
    }   
    return trim($typeid,',');   
    }
        

    添加上述代码后,您可以使用以下标签来调用子栏目的文章数量:

    
    {dede:field.typeid function="getTotalArcByTid(@me)"/}   
    [field:typeid function="getTotalArcByTid(@me)"/]
        

    通过以上步骤,您可以轻松地调用当前栏目的子栏目列表并统计其文章数量。这些方法不仅提高了网站内容管理的灵活性,还增强了用户体验。