做模板时,经常需要为每个栏目加上此栏目的文章数。和大家分享下实现的方法,此方法适合5.6及5.7、5.7sp1其它未测

  1. 步骤/方法

    1. 修改 include/common.func.php文件,在最后加以下代码:

    //统计栏目文章数
    function GetTotalArc($tid){
    global $dsql;
    $sql = GetSonIds($tid);
    $row = $dsql->GetOne("Select count(id) as dd From zmb_archives where typeid 
    in({$sql})");
    return $row['dd'];
    }
    //统计当前栏目信息数 
    function dynamic_num($current_id){ 
    global $dsql; 
    //读取当前栏目的子ID 
    $sql = "SELECT id FROM zmb_arctype WHERE id='$current_id' || 
    topid='$current_id'"; 
    $dsql->SetQuery($sql); 
    $dsql->Execute(); 
    while($row = $dsql->GetArray()){ 
    $arr[]=$row[id]; 

    foreach($arr as $key=>$value){ 
    $type .= $value . ','; 

    $ty= "".$type."0"; 
    //echo $ty; 
    $t_num = $dsql->GetOne("select count(*) as num from zmb_archives where typeid 
    in($ty)"); 
    //echo $t_num[num]; 
    if(is_array($t_num)){ 
    return " ".$t_num[num]." "; 
    }else{ 
    return "0" ; 

    }


  2. 模板里的调用代码:


    (该类拥有{dede:type}[field:id function="dynamic_num(@me)" /]{/dede:type}
    个文档)

    [field:id runphp='yes'] @me = GetTotalArc(@me);[/field:id]




  3. 例如:


    {dede:field name='typename'/}</b>(该类拥有{dede:type}[field:id 
    function="dynamic_num(@me)" /]{/dede:type}个文档)
    {dede:channel type='son' } 
    <li><a href='[field:typelink/]'>[field:typename/]</a>(<span>[field:ID 
    runphp='yes'] @me = GetTotalArc(@me);[/field:ID]</span>)</li>
    {/dede:channel}