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)"/]

注明:本文为星速云原创版权所有,禁止转载,一经发现将追究版权责任!

(0)
上一篇 2022年5月30日 上午3:57
下一篇 2022年5月30日 上午3:57

相关推荐

发表评论

登录后才能评论
问答社区 QQ客服
微信客服
微信客服
分享本页
返回顶部