CMSware计算统计CMS COUNT
来自站长百科
导航:返回上一页
用于对指定条件范围的内容进行计算统计等操作,如求计数COUNT、求总和SUM、求平均数AVG等这些功能。主要使用Function这个属性来定义需要的操作动作函数,其它属性同CMS_LIST的属性。
返回值:一个字符串变量
属性 | 必需 | 默认值 | 描述 |
---|---|---|---|
<CMS action="COUNT" return="" function="" NodeID="" TableID="" where="" query="" Tpl="" Cache="" returnKey="" /> | |||
return | 是 | 指定计算统计的返回值变量名,比如return="SoftNum" | |
function | 是 |
定义计算统计操作的函数,可使用SQL数据库支持的函数。例: 统计数目function="count(*)" 求和字段function="Sum(c.Price)" 求平均数function="Avg(c.Price)" | |
NodeID | 否 | 指定计算统计的结点范围 | |
TableID | 否 | 指定操作模型号 | |
where | 否 | 指定查询处理条件,用于统计计算 | |
query | 否 | 指定完整的统计计算SQL语句。此参数和where参数不能同时使用 | |
Tpl | 否 | - |
指定调用的子模版
|
Cache | 否 | - |
模版中的CMS调用通过使用Cache,可以大幅提升批量更新的效率. 该标签只有门户版可用
|
returnKey | 否 | - |
可以定义内容列表记录返回那些字段,一般列表只需要获得Title即可,而无需返回Content 等字段,使用此属性,可以一定程度上提高更新效能。 该标签只有门户版可用
|
例子 1:软件下载站统计数据
调用代码:
<!--统计下载模型的总软件数--> <CMS action="COUNT" return="SoftNum" function="count(*)" TableID="2" /> <op exp="$time=strtotime(date('Y-m-d'))" /> <!--统计下载模型中发布时间晚于今天凌晨的软件数--> <CMS action="COUNT" return="TodayNum" function="count(*)" TableID="2" where="i.PublishDate > {$time}" /> <!--统计新闻模型的资讯文章数--> <CMS action="COUNT" return="NewsNum" function="count(*)" TableID="1" /> <!--用自定义SQL语句统计所有软件的总下载数的总和--> <CMS action="COUNT" return="DownloadNum" query="select sum(Hits_Total) as TotalNum from #TABLE_HEADER#plugin_base_count where TableID=2 " /> 本站共有软件:[$SoftNum] 个 <br> 今日更新软件:[$TodayNum] 个 <br> 资讯文章篇数:[$NewsNum] 篇 <br> 总下载:[$DownloadNum] 次
例子 2:价格统计
调用代码:
<!--求和2号结点的所有记录的价格字段--> <cms action="COUNT" return="sumValue" Function="SUM(c.price)" NodeID="2" /> <!--计算2号结点的所有记录的价格字段的平均值--> <cms action="COUNT" return="avgValue" Function="AVG(c.price)" NodeID="2" /> price字段和: [$sumValue] price字段平均值: [$avgValue]
例子 3:计算一个特定结点下的各类数据(下面以结点ID为2的结点为例)
调用代码:
- 统计2号结点的内容数:
<cms action="COUNT" return="countValue" Function="count(*)" NodeID="2" /> 总记录数:[$countValue]
- 统计2号结点及其子结点的内容总数:
<cms action="COUNT" return="countValue" Function="count(*)" NodeID="all-2" /> 总记录数:[$countValue]
- 统计2号结点的点击总数:
<CMS action="COUNT" return="countValue" query="select sum(Hits_Total) as TotalNum from #TABLE_HEADER#plugin_base_count where TableID=1 and NodeID=2" /> 总记录数:[$countValue]
- 统计2号结点及其子结点的击总数:
<CMS action="COUNT" return="countValue" query="select sum(Hits_Total) as TotalNum from #TABLE_HEADER#plugin_base_count where TableID=1 and NodeID in (2,3,21,22)" /> 总记录数:[$countValue]
- 统计结点2-50的击总数:
<CMS action="COUNT" return="countValue" query="select sum(Hits_Total) as TotalNum from #TABLE_HEADER#plugin_base_count where NodeID>2 AND NodeID<50" /> 总记录数:[$countValue]
说明:
- (1)TableID=1:“1”为内容模型ID
- (2)NodeID in (2,3,21,22):当中的数值为结点,只要填上你要统计的结点即可!
- (3)#TABLE_HEADER#这个要全部字母为大写
例子 4:栏目文章只有一篇时直接显示文章内容;有多篇时显示文章列表;没有时显示 “本栏目正在建设中”
调用代码:
<CMS action="NODE" return="NodeInfo" /> <CMS action="COUNT" return="countValue" Function="count(*)" NodeID="{$NodeInfo.NodeID}" /> <if test="$countValue=='1'"> <CMS action="LIST" return="List" NodeID="{$NodeInfo.NodeID}" Num="1" /> <LOOP name="List" var="var" key="key"> [$var.Content] </LOOP> <elseif test="$countValue=='0'"> 本栏目正在建设中 <else> <CMS action="LIST" return="List" NodeID="{$NodeInfo.NodeID}" Num="10" /> <LOOP name="List" var="var" key="key"> <a href="[$var.URL]" target="_blank" title="[$var.Title]" >[@CsubStr($var.Title,0,16)] </a> </LOOP> </if>