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

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

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

从DEDEV5开始,SQL的引入和安全检查都得到了改进,使得一些普通的子查询无法查询。

下列编码用于处理查询当今栏目及当今栏目下全部子栏目的文章数量,加上到/include/common.func.php
或是
/include/extend.func.php中,随后在模板中启用getTotalArcByTid(1)。

复制代码编码以下:
/*
*回到合乎纪录的文章总数
*@descriptionDEDE不允许实行子查询,处理栏目下文章统计分析的难题
*@param$level为真时查询全部子品类
**/
functiongetTotalArcByTid($tid,$level=TRUE){
global$dsql;
$level==TRUE&&$tid=GetSonTypeID($tid);
$sql="SELECTcount(id)astotalfrom`dede_archives`wheretypeidin($tid)";
$result=$dsql->GetOne($sql);
return$result['total'];
}
/*
*递归获得满足条件的子栏目
*@param$tid栏目ID
*@returnstring
**/
functionGetSonTypeID($tid)
{
global$dsql;
$dsql->SetQuery("SelectidFrom`dede_arctype`wherereidin($tid)Andishidden<>1orderbysortrank");
$dsql->Execute($tid);
$typeid='';
while($row=$dsql->GetObject($tid))
{
$typeid.="{$row->id},";
$typeid.=GetSonTypeID($row->id);
}
returntrim($typeid,',');
}

启用方式:
模板中启用的方式一般为:
{dede:field.typeidfunction="getTotalArcByTid(@me)"/}
或是
[field:typeidfunction="getTotalArcByTid(@me)"/]

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/773695.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存