核心原理
织梦的文章点击数存储在 dede_archives 数据表的 click 字段中,我们的任务就是通过织梦的标签,读取这个字段的值并显示出来。

使用默认的 click 标签(最简单)
这是最直接、最常用的方法,适用于绝大多数场景。
在文章列表页(如 index.htm, list_article.htm)调用
在文章列表模板中,通常在循环标签 {dede:arclist} 内部使用。
标签代码:
{dede:aritle row='10' titlelen='50'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<!-- 点击数调用 -->
<span>点击:[field:click/]</span>
</li>
{/dede:aritle}
说明:

[field:click/]会直接输出当前文章的点击数。- 这个数字默认是不带任何格式(如千位分隔符)的纯数字。
页(如 article_article.htm)调用
在文章详情页模板中,直接使用 click 标签即可。
标签代码:
<h1>[field:title/]</h1>
<div class="info">
发布时间:[field:pubdate function="MyDate('Y-m-d H:i',@me)"/]
作者:[field:writer/]
来源:[field:source/]
<!-- 点击数调用 -->
点击:[field:click/]
</div>
说明:页,[field:click/] 同样会输出当前正在浏览的这篇文章的点击数。
自定义点击数格式(如添加千位分隔符)
默认的 [field:click/] 输出的是 12345 这样的数字,如果我们希望显示为 12,345,可以使用 function 属性来调用PHP函数进行格式化。

标签代码:
{dede:aritle row='10' titlelen='50'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<!-- 使用 number_format 函数格式化点击数 -->
<span>点击:[field:click function="number_format(@me)"/]</span>
</li>
{/dede:aritle}
说明:
function="number_format(@me)"的意思是:@me:代表当前字段的原始值,也就是click字段的值。number_format():是PHP内置的函数,用于给数字添加千位分隔符。
- 这样,点击数
12345就会显示为12,345。
获取总点击数(全站文章点击量之和)
有时候你可能想在首页的某个位置显示全站所有文章的总点击量,这需要用到 {dede:sql} 标签来执行自定义的SQL查询。
标签代码:
{dede:sql sql="SELECT SUM(click) as total_click FROM dede_archives"}
全站文章总点击量:<strong>[field:total_click/]</strong>
{/dede:sql}
说明:
sql="...":在这里编写SQL查询语句。SELECT SUM(click) as total_click FROM dede_archives:这条SQL语句的含义是,从dede_archives表中,计算出click字段的总和,并将这个结果命名为total_click。[field:total_click/]:通过这个标签来获取SQL查询结果中total_click这个字段的值。
修改点击数统计方式(重要补充)
默认情况下,织梦的点击数统计是基于 Cookie 的,即同一个用户(同一个浏览器)在24小时内多次点击同一篇文章,只会计数一次,这在一定程度上保证了数据的真实性。
如果你需要修改这个行为,比如改成每次点击都计数,或者改成基于IP的计数,你需要修改织梦的核心文件。
修改步骤:
-
找到核心文件: 文件路径为:
/include/count.php -
修改统计逻辑: 打开
count.php文件,找到类似下面的代码段:// 24小时内不重复点击 if($maintime - $ctime < 3600 * 24) { exit(); }-
修改为每次点击都计数: 将上面的
if判断语句注释掉或者删除,这样每次访问都会增加点击数。// 注释掉或删除这行,即可实现每次点击都计数 // if($maintime - $ctime < 3600 * 24) { // exit(); // } -
修改为基于IP的计数: 默认是基于Cookie的,要改成基于IP,你需要修改判断条件,找到
$ckip = GetIP();这行,然后将判断逻辑改为:// 基于IP的24小时点击限制 $sql = "SELECT clickip FROM dede_log WHERE clickip='$ckip' AND arcid='$arcid' AND catid='$catid' AND clicktime > $ctime"; $row = $dsql->GetOne($sql); if(is_array($row)) { exit(); }注意:这个修改相对复杂,如果你不熟悉PHP和SQL,请谨慎操作,或者使用现成的插件。
-
总结与建议
| 场景 | 推荐方法 | 标签代码 |
|---|---|---|
| 文章列表页显示点击数 | 方法一 | [field:click/] |
| 页显示点击数 | 方法一 | [field:click/] |
| 美化点击数(加逗号) | 方法二 | [field:click function="number_format(@me)"/] |
| 显示全站总点击量 | 方法三 | {dede:sql sql="SELECT SUM(click) FROM dede_archives"}[field:total_click/]{/dede:sql} |
| 修改点击统计规则 | 方法四 | 修改 /include/count.php 文件 |
对于绝大多数用户来说,方法一和方法二 已经完全够用,请根据你的具体需求选择合适的标签即可。
