模块中非常常见的需求,但它们是两个独立的功能点,需要分别进行设置。

(图片来源网络,侵删)
如何显示和统计文章点击量 (浏览量)
这是 DedeCMS 的一个内置功能,默认情况下,每篇文章的点击量(click)都会被记录和显示,你需要做的是确保它被正确调用和更新。
检查并开启点击量统计
DedeCMS 默认是开启点击量统计的,你可以通过以下方式确认:
- 后台设置:登录 DedeCMS 后台,进入
系统->系统基本参数->核心设置,找到是否开启文档点击统计,确保它被设置为是。
页 (article_article.htm) 显示点击量
这是用户点击文章后看到的页面,通常会在这里显示文章的阅读次数。
- 进入后台
模板->默认模板管理。 - 找到并编辑
article_article.htm文件。 - 在你希望显示点击量的位置(比如标题下方、作者信息旁边等),插入以下代码:
<small>点击:<strong>{field:click/}</strong> 次</small>
{field:click/}是 DedeCMS 的字段调用标签,用于读取当前文章的click字段值,也就是点击量。
示例:

(图片来源网络,侵删)
<h1>{field:title/}</h1>
<div class="article-info">
<span>作者:{field:writer/}</span>
<span>时间:{field:pubdate function="MyDate('Y-m-d H:i',@me)"/}</span>
<span>来源:{field:source/}</span>
<span>点击:<strong>{field:click/}</strong> 次</span> <!-- 点击量显示在这里 -->
</div>
在文章列表页 (list_article.htm) 显示点击量
在列表页,你可能想在摘要或标题旁边显示点击量,让用户了解文章的热度。
- 编辑
list_article.htm文件。 - 在循环
{dede:list}内部,使用同样的标签调用。
示例:
{dede:list pagesize='10'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span class="click-count">阅读:[field:click/]</span>
</li>
{/dede:list}
点击量如何自动增加?
点击量的增加是自动的,当有用户通过 DedeCMS 的正常路径(如列表页链接、搜索结果链接等)访问文章内容页时,系统会自动将该文章的 click 字段值加 1。
注意:

(图片来源网络,侵删)
- 如果你的网站做了伪静态或 URL 重写,确保规则正确,否则可能无法正确统计点击量。
- 直接在浏览器地址栏输入文章 ID 的动态链接(如
plus/view.php?aid=123)通常也能被统计。 - 刷新页面不会增加点击量(除非你修改了核心文件,使其刷新也计数,但这不推荐)。
如何实现 likearticle (点赞) 功能
点赞功能 DedeCMS 本身不自带,需要我们手动进行二次开发,核心思路是:前端点击 -> Ajax 请求后端 -> 后端更新数据库 -> 返回结果。
下面是一个完整的实现步骤:
第 1 步:数据库准备
我们需要一个地方来存储每篇文章的点赞数,最简单的方式是直接利用文章表 dede_archives。
- 登录你的网站数据库(如使用 phpMyAdmin)。
- 找到 DedeCMS 的文章表,通常是
dede_archives(前缀dede_可能不同,请根据你的实际情况修改)。 - 为该表添加一个新的字段,用来存储点赞数。
ALTER TABLE `dede_archives` ADD `likes` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '点赞数';
执行后,dede_archives 表中就多了一个 likes 字段,初始值为 0。
第 2 步:修改文章内容页模板 (article_article.htm)
这是用户进行点赞操作的界面。
- 编辑
article_article.htm文件。 - 在你希望显示点赞按钮和数量的位置,添加以下 HTML 代码:
<div class="like-container">
<span class="like-count">点赞:<strong id="like_count">{field:likes/}</strong></span>
<a href="javascript:;" id="like_btn" class="like-btn">赞一个</a>
</div>
- 为了美观,可以添加一些 CSS 样式,在
<head>标签内或外部 CSS 文件中加入:
.like-container {
margin-top: 15px;
font-size: 14px;
}
.like-btn {
display: inline-block;
padding: 5px 15px;
background-color: #ff6600;
color: #fff;
border-radius: 3px;
cursor: pointer;
text-decoration: none;
transition: background-color 0.3s;
}
.like-btn:hover {
background-color: #e55a00;
}
.like-btn.liked {
background-color: #ccc;
cursor: not-allowed;
}
第 3 步:创建后端处理文件 (like.php)
这个文件将接收前端的点赞请求,并更新数据库。
- 在 DedeCMS 的
plus目录下,新建一个文件,命名为like.php。 - 将以下代码复制到
like.php中:
<?php
require_once(dirname(__FILE__)."/../include/config_global.php");
require_once(DEDEINC."/arc.archives.class.php");
// 获取文章ID
$aid = isset($aid) && is_numeric($aid) ? $aid : 0;
// 如果没有文章ID,则返回错误
if ($aid <= 0) {
echo json_encode(array('code' => 1, 'msg' => '参数错误'));
exit();
}
// 使用Dede的数据库类
$dsql = new DedeSqli(false);
// 防止重复点赞 (通过Cookie)
$cookie_name = 'dede_liked_' . $aid;
if (isset($_COOKIE[$cookie_name])) {
echo json_encode(array('code' => 3, 'msg' => '您已经点过赞了!'));
exit();
}
// 更新数据库中的点赞数
$sql = "UPDATE `#@__archives` SET `likes` = `likes` + 1 WHERE `id` = $aid";
$rs = $dsql->ExecuteNoneQuery($sql);
if ($rs) {
// 获取更新后的点赞数
$row = $dsql->GetOne("SELECT `likes` FROM `#@__archives` WHERE `id` = $aid");
$likes = $row['likes'];
// 设置Cookie,有效期30天
setcookie($cookie_name, '1', time() + 30 * 86400, '/');
// 返回成功信息
echo json_encode(array('code' => 0, 'msg' => '点赞成功!', 'likes' => $likes));
} else {
echo json_encode(array('code' => 2, 'msg' => '点赞失败,请稍后再试!'));
}
$dsql->Close();
?>
第 4 步:添加前端 JavaScript 代码
在 article_article.htm 文件中,引入 jQuery(如果还没有引入),并编写处理点击事件的 JS 代码。
-
在
<head>标签内引入 jQuery(DedeCMS 默认模板已经引入):<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
-
在页面底部
</body>标签之前,添加以下 JS 代码:
<script>
$(document).ready(function(){
// 绑定点赞按钮的点击事件
$("#like_btn").click(function(){
// 获取文章ID
var aid = {field:id/};
// 禁用按钮,防止重复点击
$(this).addClass('liked').text('已赞').prop('disabled', true);
// 发送Ajax请求到后端
$.ajax({
url: "/plus/like.php",
type: "POST",
data: {aid: aid},
dataType: "json",
success: function(response){
if(response.code == 0){
// 更新页面上的点赞数
$("#like_count").text(response.likes);
} else if(response.code == 3){
// 用户已点过赞,提示并禁用按钮
alert(response.msg);
$("#like_btn").addClass('liked').text('已赞').prop('disabled', true);
} else {
// 其他错误
alert(response.msg);
// 恢复按钮状态
$("#like_btn").removeClass('liked').text('赞一个').prop('disabled', false);
}
},
error: function(){
alert("网络错误,请稍后再试!");
// 恢复按钮状态
$("#like_btn").removeClass('liked').text('赞一个').prop('disabled', false);
}
});
});
});
</script>
注意:{field:id/} 是文章内容页特有的标签,它会直接输出当前文章的 ID,这样 JS 就能知道是哪篇文章被点赞了。
| 功能 | 实现方式 | 核心标签/文件 | 数据库字段 |
|---|---|---|---|
| 点击量 (浏览量) | 内置功能,自动统计和更新 | {field:click/} |
click |
| 点赞量 (likearticle) | 二次开发,需要手动实现 | HTML, CSS, JS, like.php |
likes |
通过以上步骤,你就可以在你的 DedeCMS 网站中同时拥有显示点击量和实现点赞的功能了。
