dede likearticle点击量如何统计?

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

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

dede likearticle 点击量
(图片来源网络,侵删)

如何显示和统计文章点击量 (浏览量)

这是 DedeCMS 的一个内置功能,默认情况下,每篇文章的点击量(click)都会被记录和显示,你需要做的是确保它被正确调用和更新。

检查并开启点击量统计

DedeCMS 默认是开启点击量统计的,你可以通过以下方式确认:

  • 后台设置:登录 DedeCMS 后台,进入 系统 -> 系统基本参数 -> 核心设置,找到 是否开启文档点击统计,确保它被设置为

页 (article_article.htm) 显示点击量

这是用户点击文章后看到的页面,通常会在这里显示文章的阅读次数。

  1. 进入后台 模板 -> 默认模板管理
  2. 找到并编辑 article_article.htm 文件。
  3. 在你希望显示点击量的位置(比如标题下方、作者信息旁边等),插入以下代码:
<small>点击:<strong>{field:click/}</strong> 次</small>
  • {field:click/} 是 DedeCMS 的字段调用标签,用于读取当前文章的 click 字段值,也就是点击量。

示例:

dede likearticle 点击量
(图片来源网络,侵删)
<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) 显示点击量

在列表页,你可能想在摘要或标题旁边显示点击量,让用户了解文章的热度。

  1. 编辑 list_article.htm 文件。
  2. 在循环 {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。

注意

dede likearticle 点击量
(图片来源网络,侵删)
  • 如果你的网站做了伪静态或 URL 重写,确保规则正确,否则可能无法正确统计点击量。
  • 直接在浏览器地址栏输入文章 ID 的动态链接(如 plus/view.php?aid=123)通常也能被统计。
  • 刷新页面不会增加点击量(除非你修改了核心文件,使其刷新也计数,但这不推荐)。

如何实现 likearticle (点赞) 功能

点赞功能 DedeCMS 本身不自带,需要我们手动进行二次开发,核心思路是:前端点击 -> Ajax 请求后端 -> 后端更新数据库 -> 返回结果

下面是一个完整的实现步骤:

第 1 步:数据库准备

我们需要一个地方来存储每篇文章的点赞数,最简单的方式是直接利用文章表 dede_archives

  1. 登录你的网站数据库(如使用 phpMyAdmin)。
  2. 找到 DedeCMS 的文章表,通常是 dede_archives (前缀 dede_ 可能不同,请根据你的实际情况修改)。
  3. 为该表添加一个新的字段,用来存储点赞数。
ALTER TABLE `dede_archives` ADD `likes` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '点赞数';

执行后,dede_archives 表中就多了一个 likes 字段,初始值为 0。

第 2 步:修改文章内容页模板 (article_article.htm)

这是用户进行点赞操作的界面。

  1. 编辑 article_article.htm 文件。
  2. 在你希望显示点赞按钮和数量的位置,添加以下 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>
  1. 为了美观,可以添加一些 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)

这个文件将接收前端的点赞请求,并更新数据库。

  1. 在 DedeCMS 的 plus 目录下,新建一个文件,命名为 like.php
  2. 将以下代码复制到 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 代码。

  1. <head> 标签内引入 jQuery(DedeCMS 默认模板已经引入):

    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  2. 在页面底部 </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 网站中同时拥有显示点击量和实现点赞的功能了。

-- 展开阅读全文 --
头像
dede list 排序 orderby 参数如何正确使用?
« 上一篇 2025-12-02
DedeCMS CSS如何优化内容管理系统体验?
下一篇 » 2025-12-02

相关文章

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

目录[+]