• 网站认证
  • 教程:5,156|
  • 话题:4269|
  • 评论:45|
  • 会员:177|
  • 注册
  • 查看作者
  • 织梦DedeCMS获取当前栏目文章数量

    使用织梦DedeCMS建站的时候,有时候需要对当前栏目及其所有子栏目的文档数量进行统计,方便反馈给用户。我们可以在织梦DedeCMS的模板中使用SQL标签来实现,不过织梦DedeCMS为了系统的安全,加强了对SQL注入和安全的检查,导致无法查询一些正常的子查询的SQL。

    那怎么实现获取当前栏目及其所有子栏目的文档数量的功能呢?我们可以使用自定义函数解决。No牛网把方法整理如下,修改织梦程序include/common.func.php文件,在最后加以下代码:

    //统计栏目文章数

    functionGetTotalArc($tid){

    global$dsql;

    $sql= GetSonIds($tid);

    $row=$dsql->GetOne("Selectcount(id)asdd From `dede_archives` where typeid

    in({$sql})");

    return$row['dd'];

    }

    //统计当前栏目信息数

    functiondynamic_num($current_id){

    global$dsql;

    //读取当前栏目的子ID

    $sql= "SELECT id FROM `dede_arctype` WHERE id='$current_id'||

    topid='$current_id'";

    $dsql->SetQuery($sql);

    $dsql->Execute();

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

    $arr[]=$row[id];

    }

    foreach($arras$key=>$value){

    $type.=$value.',';

    }

    $ty="".$type."0";

    //echo $ty;

    $t_num=$dsql->GetOne("selectcount(*)asnum from `dede_archives` where typeid

    in($ty)");

    //echo $t_num[num];

    if(is_array($t_num)){

    return" ".$t_num[num]." ";

    }else{

    return"0";

    }

    }

    以上代码就是新增了两个函数,一个统计栏目文章数,另一个统计当前栏目信息数,在织梦DedeCMS模板中可以和调用系统函数一样调用他们。如使用如下的调用代码:

    {dede:field name=’typename’/}</b>(该类拥有{dede:type}[field:id

    function="dynamic_num(@me)" /]{/dede:type}个文档)

    {dede:channel type=’son’ }

    <li><ahref=’[field:typelink/]‘>[field:typename/]</a>(<span>[field:ID

    runphp='yes'] @me = GetTotalArc(@me);[/field:ID]</span>)</li>

    {/dede:channel}

  • 0
  • 0
  • 0
  • 38
  • 请登录之后再进行评论

    登录
  • 做任务
  • 实时动态
  • 偏好设置
  • 自定义-1
  • 单栏布局 侧栏位置: