dede统计代码标签如何正确使用?

99ANYc3cd6
预计阅读时长 20 分钟
位置: 首页 DEDE建站 正文

DedeCMS 的统计功能非常强大,通过其内置的标签,可以轻松地在网站前台显示各种数据统计信息,这些标签的核心是 {dede:arclist}{dede:sql} 等底层标签,或者直接使用系统提供的专用统计标签。

dede统计代码 标签
(图片来源网络,侵删)

下面我将分类介绍这些标签,并提供最常用和最实用的代码示例。


核心专用统计标签

DedeCMS 提供了一些非常方便的专用标签,用于直接调用预设好的统计数据。

网站基本信息标签

这些标签用于调用网站后台设置的全局信息。

  • 网站名称:

    dede统计代码 标签
    (图片来源网络,侵删)
    {dede:global.cfg_webname/}
  • 网站首页链接:

    {dede:global.cfg_indexurl/}
  • 网站描述:

    {dede:global.cfg_description/}
  • 网站版权信息:

    {dede:global.cfg_powerby/}

文章/信息统计标签

这是最常用的统计类别,通常在网站底部显示。

  • 文章总数:

    {dede:sql sql="SELECT COUNT(*) AS c FROM `dede_archives` where channel=1"}
    文章总数:[field:c/]
    {/dede:sql}
    • 说明:
      • dede_archives 是文章主表。
      • channel=1 表示只统计普通文章,如果需要统计所有内容(包括图集、软件等),可以去掉 where channel=1 条件。
      • AS c 是给 COUNT(*) 结果起一个别名 c,方便在 {field:c/} 中调用。
  • 图集总数:

    {dede:sql sql="SELECT COUNT(*) AS c FROM `dede_archives` where channel=2"}
    图集总数:[field:c/]
    {/dede:sql}
  • 软件总数:

    {dede:sql sql="SELECT COUNT(*) AS c FROM `dede_archives` where channel=3"}
    软件总数:[field:c/]
    {/dede:sql}
  • 评论总数:

    {dede:sql sql="SELECT COUNT(*) AS c FROM `dede_feedback`"}
    评论总数:[field:c/]
    {/dede:sql}
  • 会员总数:

    {dede:sql sql="SELECT COUNT(*) AS c FROM `dede_member`"}
    注册会员:[field:c/]
    {/dede:sql}

使用 {dede:sql} 标签实现高级统计

{dede:sql} 是一个非常灵活的标签,它允许你直接执行 SQL 语句来获取任何你想要的数据,上面大部分例子都使用了它。

统计今日新增文章

{dede:sql sql="SELECT COUNT(*) AS c FROM `dede_archives` WHERE FROM_UNIXTIME(pubdate, '%Y-%m-%d') = CURDATE()"}
今日更新:[field:c/] 篇
{/dede:sql}
  • 说明:
    • pubdate 是文章发布时间的时间戳字段。
    • FROM_UNIXTIME(pubdate, '%Y-%m-%d') 将时间戳格式化为 YYYY-MM-DD 的日期字符串。
    • CURDATE() 是 MySQL 函数,获取当前日期。
    • 这句 SQL 的意思就是:统计今天发布的文章数量。

统计昨日新增文章

{dede:sql sql="SELECT COUNT(*) AS c FROM `dede_archives` WHERE FROM_UNIXTIME(pubdate, '%Y-%m-%d') = DATE_SUB(CURDATE(), INTERVAL 1 DAY)"}
昨日更新:[field:c/] 篇
{/dede:sql}
  • 说明:
    • DATE_SUB(CURDATE(), INTERVAL 1 DAY) 获取昨天的日期。

统计本周新增文章

{dede:sql sql="SELECT COUNT(*) AS c FROM `dede_archives` WHERE YEARWEEK(FROM_UNIXTIME(pubdate, '%Y-%m-%d')) = YEARWEEK(CURDATE())"}
本周更新:[field:c/] 篇
{/dede:sql}

统计本月新增文章

{dede:sql sql="SELECT COUNT(*) AS c FROM `dede_archives` WHERE FROM_UNIXTIME(pubdate, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m')"}
本月更新:[field:c/] 篇
{/dede:sql}

使用 {dede:arclist} 标签进行内容统计

虽然 {dede:arclist} 主要用于列表调用,但它也可以通过一些属性来实现简单的统计。

获取指定栏目下的文章总数

{dede:arclist row='0' titlelen='0'}
    [field:ID/]
{/dede:arclist}
  • 说明:
    • row='0' 表示获取所有符合条件的记录。
    • titlelen='0' 表示标题长度为0,即不显示标题。
    • {field:ID/} 会循环输出每个文章的ID,你只需要查看页面源代码,计算一下 [field:ID/] 出现的次数,就是该栏目的文章总数,这是一种比较“笨”但有效的方法。

获取所有栏目的文章总数并循环输出

{dede:channel typeid='0' type='top'}
    <a href="[field:typelink/]">[field:typename/]</a> ([field:id runphp='yes'] @me = GetTotalArc(@me);[/field:id])
{/dede:channel}
  • 说明:
    • {dede:channel} 调用所有顶级栏目。
    • typeid='0' type='top' 表示调用所有顶级栏目。
    • runphp='yes' 表示对 field:id 的值进行PHP处理。
    • @me = GetTotalArc(@me); 是核心。@me 默认是当前栏目的ID。GetTotalArc() 是 DedeCMS 的一个内置函数,用于获取指定ID的栏目下的文章总数,执行后,@me 的值就变成了文章总数。
    • 最终效果就是:栏目名称 (文章总数),技术分享 (15)。

实用场景:网站底部信息栏统计代码

这是一个非常常见的应用场景,将以上代码组合起来,放在 footer.htm 模板文件中。

<div class="footer-info">
    <p>
        <span>文章总数:<strong>{dede:sql sql="SELECT COUNT(*) AS c FROM `dede_archives`"}[field:c/]{/dede:sql}</strong> 篇</span>
        <span>图集总数:<strong>{dede:sql sql="SELECT COUNT(*) AS c FROM `dede_archives` where channel=2"}[field:c/]{/dede:sql}</strong> 个</span>
        <span>会员总数:<strong>{dede:sql sql="SELECT COUNT(*) AS c FROM `dede_member`"}[field:c/]{/dede:sql}</strong> 位</span>
    </p>
    <p>
        <span>今日更新:<strong>{dede:sql sql="SELECT COUNT(*) AS c FROM `dede_archives` WHERE FROM_UNIXTIME(pubdate, '%Y-%m-%d') = CURDATE()"}[field:c/]{/dede:sql}</strong> 篇</span>
        <span>评论总数:<strong>{dede:sql sql="SELECT COUNT(*) AS c FROM `dede_feedback`"}[field:c/]{/dede:sql}</strong> 条</span>
        <span>总访问量:<strong>{dede:sql sql="SELECT COUNT(*) AS c FROM `dede_homepagecount`"}[field:c/]{/dede:sql}</strong> 次</span>
    </p>
    <p>
        Copyright &copy; 2025 {dede:global.cfg_webname/} All Rights Reserved. | <a href="{dede:global.cfg_copyright/}">{dede:global.cfg_powerby/}</a>
    </p>
</div>

注意事项

  1. 性能考虑: {dede:sql} 标签每次执行都会查询一次数据库,如果你的网站页面很多,并且每个页面都调用多个统计标签,会增加数据库的负担,可能导致网站速度变慢,建议只在首页或少数关键页面使用。
  2. 缓存: DedeCMS 有自己的缓存机制,当你修改了模板文件后,需要到后台的 “生成” -> “更新主页HTML”“更新缓存” 中更新一下,才能在前台看到效果。
  3. 表前缀: 你的数据库表前缀可能不是默认的 dede_,如果你的表前缀是 cms_,那么代码中的 dede_archives 就需要改成 cms_archives,请根据你的实际情况进行修改。
  4. 安全性: 使用 {dede:sql} 时,确保你的 SQL 语句是安全的,避免 SQL 注入风险,在后台调用时,系统已经做了基本的安全处理,但仍需谨慎。
统计目标 推荐标签 示例代码
网站基本信息 {dede:global} {dede:global.cfg_webname/}
文章总数 {dede:sql} {dede:sql sql="SELECT COUNT(*) AS c FROMdede_archives"}[field:c/]{/dede:sql}
图集/软件总数 {dede:sql} 修改 channel 值即可
评论/会员总数 {dede:sql} 修改表名 dede_feedback / dede_member
昨日更新 {dede:sql} 使用 CURDATE()DATE_SUB() 函数
指定栏目文章数 {dede:channel} + runphp [field:id runphp='yes']@me = GetTotalArc(@me);[/field:id]
访问量统计 {dede:sql} SELECT COUNT(*) FROMdede_homepagecount``

希望这份详细的指南能帮助你更好地使用 DedeCMS 的统计功能!

-- 展开阅读全文 --
头像
学生成绩管理C语言设计如何实现核心功能?
« 上一篇 03-19
织梦列表页如何自定义显示条数?
下一篇 » 03-19

相关文章

取消
微信二维码
支付宝二维码

目录[+]