个人工具
名字空间
变换
操作

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 -

指定调用的子模版

  • Tpl="list_style_1.html": 调用子模版“list_style_1.html”
Cache -

模版中的CMS调用通过使用Cache,可以大幅提升批量更新的效率. 该标签只有门户版可用

  • Cache="1": 特别注意,只有模版公共调用的部分使用Cache 才有效果,比如内容页头部的导航NODELIST调用,或者top10之类的调用,结点首页的page-10分页调用最好不要用Cache, 因为不会提升任何效率.
returnKey -

可以定义内容列表记录返回那些字段,一般列表只需要获得Title即可,而无需返回Content 等字段,使用此属性,可以一定程度上提高更新效能。 该标签只有门户版可用

  • returnKey="Title,Keywords":返回标题和关键词字段

例子 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>


参考来源

留言