DEDECMS获取当前栏目及所有子栏目的文章数量

  因DEDEV5起,加强了对SQL注入和安全的检查,导致无法查询一些正常的子查询的SQL。以下代码用来解决查询当前栏目及当前栏目下所有子栏目的文章总数,添加到/include/common.func.php

  或者

  /include/extend.func.php中,然后在模板中调用getTotalArcByTid(1)。

  代码如下:

  /*

  * 返回符合记录的文章数量

  * @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)”/]

☉免责声明:本站所有模板均来自用户分享和网络收集,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服,我们核实后会立即删除。
☉本站提供的源码、模板、软件工具等其他资源,都不包含技术服务,请大家谅解!
pbootcms模板网 » DEDECMS获取当前栏目及所有子栏目的文章数量

Pbootcms模板网 提供优质的模板集合

立即查看 了解详情