使用内置的 click 标签(最简单、最推荐)
这是织梦官方提供最直接、最简单的方法,适用于绝大多数情况。
适用场景
标准的列表页模板,如 /templets/default/list_article.htm。
操作步骤
-
找到列表循环标签 打开你的列表页模板文件,找到文章列表的循环部分,通常是这样的代码:
{dede:list pagesize='10'} <li> <a href="[field:arcurl/]">[field:title/]</a> <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span> </li> {/dede:list} -
在循环内添加点击数调用标签 在
<a>标签内部或任何你希望显示点击数的位置,加入[field:click/]标签即可。示例代码:
{dede:list pagesize='10'} <li> <!-- 在标题后面加上点击数 --> <a href="[field:arcurl/]">[field:title/]</a> <span>点击:[field:click/]</span> <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span> </li> {/dede:list}
标签说明
[field:click/]:这是最核心的标签,它会直接从数据库的dede_archives表中click字段读取当前文章的点击次数并显示出来。
优点
- 简单高效:无需任何修改,直接调用。
- 性能好:数据直接从数据库读取,没有额外开销。
使用自定义函数(灵活、可扩展)
如果你想对点击数进行格式化,比如在数字前加上“人气:”或在数字后面加上“次”,或者进行其他计算,可以使用自定义函数。
适用场景
需要对点击数进行特殊处理或格式化显示。
操作步骤
-
创建自定义函数 在你的织梦网站根目录下,找到
/include/extend.func.php文件,如果这个文件不存在,就新建一个,在这个文件里添加一个自定义函数。示例函数(在
extend.func.php中添加):/** * 格式化文章点击数 * @param int $click 点击数 * @return string 格式化后的字符串 */ function GetClick($click) { // 如果点击数小于1000,直接显示 if ($click < 1000) { return '人气:' . $click; } // 如果点击数大于等于1000,显示为 1.2k 的格式 else { return '人气:' . round($click / 1000, 1) . 'k'; } } -
在列表页模板中调用自定义函数 使用
function属性来调用你刚刚创建的函数。示例代码(在列表模板中):
{dede:list pagesize='10'} <li> <a href="[field:arcurl/]">[field:title/]</a> <!-- 调用自定义函数 GetClick 来处理 click 字段 --> <span>[field:click function="GetClick(@me)"/]</span> <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span> </li> {/dede:list}
优点
- 高度灵活:可以自由定义点击数的显示格式。
- 代码复用:定义一次,可以在全站任何地方调用。
手动获取并显示(适用于非标准列表或特殊需求)
如果你的列表页不是通过 {dede:list} 标签生成的,或者你需要在一个非循环的特定位置显示某篇文章的点击数,你可以使用 GetOneArchive 函数来手动获取文章信息。
适用场景
- 在列表页的某个特定位置(如列表上方或下方)显示“本栏目总点击数”。
- 使用AJAX或其他方式动态加载文章列表时。
操作步骤
-
在模板中编写PHP代码 在你的列表页模板文件(如
list_article.htm)中,你可以直接嵌入PHP代码,但为了安全,最好使用织梦提供的php示例:获取并显示ID为1的文章的点击数
<div> 这篇文章的点击数是: {php $arc = GetOneArchive(1);} {$arc.click} </div>示例:获取当前栏目下所有文章的总点击数
<div> 本栏目文章总点击数: {php $typeid = $GLOBALS['typeid']; // 获取当前栏目ID $dsql = new DedeSql(false); $dsql->SetQuery("SELECT SUM(click) as total_click FROM dede_archives WHERE typeid = $typeid"); $dsql->Execute('t'); $row = $dsql->GetArray('t'); echo $row['total_click']; $dsql->Close(); } </div>然后将这个代码块放在
{dede:list}循环之外。
优点
- 不受限于标签:可以在模板的任何位置获取任意文章的数据。
- 功能强大:可以实现非常复杂的统计和查询。
缺点
- 性能较低:每次页面加载都会执行额外的数据库查询,如果频繁使用会影响页面加载速度。
- 代码复杂:需要了解PHP和织梦数据库结构。
重要注意事项
-
点击数不增加的问题 如果你在列表页看到点击数,但点击文章进入详情页后,点击数没有增加,请检查:
- 文章详情页模板:确保详情页有
[field:click/]- 页调用:在详情页的适当位置(如标题下方)加上
[field:click/]。- JS点击统计代码:织梦默认通过JS来增加点击数,请确保你的详情页加载了织梦的核心JS文件(通常是
dedecms.js),并且没有被其他JS库冲突或禁用。 - 页调用:在详情页的适当位置(如标题下方)加上
- 文章详情页模板:确保详情页有
-
性能考虑
- 对于列表页,强烈推荐使用方法一。
{dede:list}在查询数据库时已经把click字段查询出来了,直接使用[field:click/]是零开销的。 - 避免在列表循环内使用方法三,如果在
{dede:list}循环内部对每篇文章都执行一次GetOneArchive,会导致大量的数据库查询,会使你的网站变得非常卡顿。
- 对于列表页,强烈推荐使用方法一。
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
[field:click/] |
绝大多数标准列表页 | 最简单、最高效、性能最好 | 灵活性较低,只能直接显示数字 |
| 自定义函数 | 需要对点击数进行格式化或特殊处理 | 灵活、可扩展、代码复用 | 需要修改 extend.func.php 文件 |
| 手动获取 | 非标准列表、特殊统计需求 | 功能强大,不受标签限制 | 性能较低,代码复杂,不推荐在列表循环内使用 |
对于99%的需求,直接使用方法一 [field:click/] 就完全足够了。
