dede如何调用文章浏览次数?

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

DedeCMS文章浏览次数调用全攻略:从基础到高级,附常见问题解决方案

本文详细讲解了在DedeCMS(织梦CMS)系统中如何正确调用文章浏览次数的方法,无论是新手站长还是有一定经验的开发者,都能从本文中获得实用技巧,我们将从最简单的模板标签入手,逐步深入到自定义字段、JS调用以及性能优化等高级应用,并针对调用失败、不显示等常见问题提供详尽的解决方案,助你轻松实现文章浏览量统计与展示。

dede 调用文章浏览次数
(图片来源网络,侵删)

引言:为什么文章浏览次数如此重要?

为王的时代,一个网站的价值不仅在于其内容的数量与质量,更在于用户对内容的互动程度,文章浏览次数(又称阅读量、点击量)是衡量内容受欢迎程度最直观的指标之一,它不仅能:

  1. 提升用户体验: 帮助访快速判断文章的热门程度,发现优质内容。
  2. 激励作者创作: 为内容创作者提供量化反馈,激发其创作热情。
  3. 增强SEO效果: 高浏览量的文章往往意味着高用户停留时间,这有利于搜索引擎对网站权重的判断。
  4. 增加网站粘性: 通过“热门文章”等模块,引导用户探索更多内容,提升PV(页面浏览量)。

对于国内广泛使用的DedeCMS系统而言,掌握如何调用和展示浏览次数,是每一位运营者和开发者必备的基础技能,本文将为你彻底揭开这层神秘面纱。

基础篇:DedeCMS浏览次数调用的核心方法

DedeCMS默认会在文章模型中记录浏览次数,我们只需要通过特定的模板标签即可将其调用出来,最常用、最直接的方法是使用[field:click/]

在文章列表页(如 arclist.htm)调用

在文章列表页,我们通常希望在文章标题旁边显示一个简短的浏览次数,以供用户参考。

操作步骤:

dede 调用文章浏览次数
(图片来源网络,侵删)
  1. 登录你的DedeCMS后台。

  2. 进入“模板” -> “默认模板管理”。

  3. 找到并打开你的文章列表模板文件,通常是 arclist.htm

  4. 在你希望显示浏览次数的位置,插入以下代码:

    <span>浏览:[field:click/]次</span>

代码解析:

  • [field:click/]:这是DedeCMS系统内置的底层字段调用标签,用于获取当前文章的浏览次数数据。

示例效果: <a href="[field:arcurl/]">[field:title/]</a> <span>浏览:128次</span>

页(如 article_article.htm)调用

页,我们通常会希望将浏览次数放在文章标题下方或作者信息旁边,作为文章元数据的一部分。

操作步骤:

  1. 同样在“模板” -> “默认模板管理”中。

  2. 找到并打开你的文章内容页模板文件,通常是 article_article.htm

  3. 在合适的位置插入代码:

    <p>本文已被阅读 <strong>[field:click/]</strong> 次</p>

代码解析:

  • 原理与列表页完全相同,都是使用[field:click/]标签,可以根据页面布局使用不同的HTML标签进行美化,如<span><em><strong>等。

示例效果: <h1>[field:title/]</h1> <p>作者:[field:writer/] | 来源:[field:source/] | 本文已被阅读 <strong>512</strong> 次</p>


进阶篇:自定义与美化浏览次数显示

默认的数字显示虽然功能完整,但在视觉上可能不够吸引人,我们可以通过自定义字段和CSS样式对其进行美化。

使用自定义字段实现“万+”等格式

当浏览次数达到一定数量时(如过万),我们希望显示为“1.2万+”这样的格式,这需要用到DedeCMS的自定义字段和php代码。

操作步骤:

  1. 添加自定义字段:

    • 进入“核心” -> “内容模型管理” -> “普通文章” -> “字段管理” -> “增加新字段”。
    • 字段名:click_format (字段名只能用英文、数字、下划线)
    • 字段类型:文本
    • 字段提示:格式化后的浏览次数
    • 保存。
  2. 修改文章内容页模板(article_article.htm):<head>标签内或<body>标签底部,添加以下PHP代码:

    {dede:php}
    $click = $fields['click'];
    if($click >= 10000) {
        $click_format = round($click / 10000, 1) . '万+';
    } else {
        $click_format = $click . '次';
    }
    $this->Fields['click_format'] = $click_format;
    {/dede:php}

    注意: 你的网站模板必须开启了PHP代码支持,如果未开启,需要在后台“系统” -> “系统基本参数” -> “核心设置”中,将“模板引擎类型”设置为“php”。

  3. 在模板中调用自定义字段: 将之前调用[field:click/]的地方,替换为调用我们新创建的自定义字段:

    <span>阅读:[field:click_format/]</span>

当浏览次数超过10000时,就会自动显示为“1.2万+”的格式。

使用CSS美化浏览次数

为了让浏览次数更醒目,我们可以用CSS来修饰它。

操作步骤:

  1. 在你的CSS文件(如 /templets/default/style/dedecms.css)中添加以下样式:

    /* 文章浏览次数美化样式 */
    .article-view-count {
        display: inline-block;
        margin-left: 15px;
        padding: 2px 8px;
        background-color: #f0f0f0;
        color: #666;
        border-radius: 12px;
        font-size: 12px;
    }
    .article-view-count i {
        margin-right: 4px;
        color: #ff6600; /* 使用一个图标字体,如FontAwesome */
    }
  2. 修改HTML结构,为显示浏览次数的元素添加一个class:

    <a href="[field:arcurl/]">[field:title/]</a>
    <span class="article-view-count"><i class="fa fa-eye"></i> [field:click/]</span>

    (使用图标需要先在你的网站中引入FontAwesome等图标库)


高级篇:浏览次数的实时更新与性能优化

默认情况下,DedeCMS的浏览次数是在用户刷新页面时才更新的,这并非真正的“实时”,高并发下频繁更新数据库可能会影响性能。

使用JS实现异步更新浏览次数(推荐)

这种方法可以在用户不刷新页面的情况下,异步地将浏览次数+1并更新显示,体验更佳,且减轻了服务器负担。

实现原理:

  1. 页面加载时,通过[field:click/]显示当前已记录的浏览次数。
  2. 页面加载完成后,触发一个AJAX请求,后端PHP脚本接收请求,将数据库中该文章的click字段值+1。
  3. 前端JS接收到后端返回的最新浏览次数,并更新页面显示。

具体实现:

  1. 修改文章内容页模板(article_article.htm):<body>标签结束前添加以下JS代码:

    <script>
    document.addEventListener('DOMContentLoaded', function() {
        // 获取文章ID,DedeCMS默认的arcid变量
        var aid = "{dede:field.aid/}";
        // 创建一个Image对象来发送请求,避免跨域问题
        var img = new Image();
        img.src = "/plus/count.php?aid=" + aid + "&view=yes";
        // 可选:如果需要显示更新后的数字,可以请求一个返回JSON的接口
        // fetch("/api/update_click.php?aid=" + aid)
        //     .then(response => response.json())
        //     .then(data => {
        //         document.getElementById('click-display').innerText = data.click;
        //     });
    });
    </script>

    (上述第一种方法是DedeCMS自带的简单计数器方式,第二种是更推荐的AJAX方式,需要你创建一个/api/update_click.php文件来处理逻辑。)

  2. 创建后端处理文件(/api/update_click.php): 在网站根目录下创建api文件夹,并新建update_click.php如下:

    <?php
    require_once(dirname(__FILE__) . "/../include/common.inc.php");
    if(empty($aid)) {
        exit(json_encode(['code' => 1, 'msg' => '文章ID不能为空']));
    }
    // 使用DedeCMS的API来更新点击数
    $dsql->ExecuteNoneQuery("UPDATE `#@__archives` SET click=click+1 WHERE id='$aid'");
    // 获取更新后的点击数
    $row = $dsql->GetOne("SELECT click FROM `#@__archives` WHERE id='$aid'");
    echo json_encode(['code' => 0, 'msg' => 'success', 'click' => $row['click']]);
    ?>
  3. 修改模板中的显示元素: 将原来的[field:click/]替换为一个有ID的<span>标签: <span id="click-display">[field:click/]</span>

    JS代码中的fetch请求会更新这个<span>


疑难解答:DedeCMS调用浏览次数常见问题

问题1:为什么[field:click/]显示为0或不显示?

  • 原因1: 新发布的文章,确实还没有被浏览过。
  • 原因2: 模板标签错误,请确保标签拼写完全正确,且没有多余的空格或字符。
  • 原因3: 文章模型问题,检查文章是否使用了正确的模型,并且该模型中包含click字段。
  • 原因4: 缓存问题,进入DedeCMS后台“系统” -> “一键更新网站” -> “更新所有”,清除缓存后再查看。

问题2:浏览次数更新很慢,需要刷新页面才变化?

  • 原因: 这是DedeCMS的默认机制,为了解决此问题,强烈推荐使用方法五(JS异步更新),它可以实现即点即增,无需刷新。

问题3:使用JS异步更新后,浏览次数统计不准确?

  • 原因1: 用户禁用了JS,这是无法避免的,极少数用户会因此不被统计。
  • 原因2: 服务器或网络问题导致AJAX请求失败,可以在fetch.catch()块中添加重试逻辑或记录错误日志。
  • 原因3: 并发请求导致的数据竞争,在高并发场景下,简单的click=click+1可能会导致计数不准,对于高流量网站,建议使用Redis等缓存数据库来管理计数器,原子性地递增。

问题4:如何调用“今日浏览”和“昨日浏览”?

  • DedeCMS默认不记录这两个数据,你需要通过修改数据库结构和程序来实现,这属于高级开发范畴,通常需要:
    1. #@__archives或新建表中增加dayclick(今日点击)和yesterdayclick(昨日点击)字段。
    2. 编写一个定时任务(如Cron Job),在每天零点将click的值赋给yesterdayclick,并将dayclick清零。
    3. 修改计数逻辑,在每次点击时同时更新clickdayclick
    4. 在模板中使用[field:dayclick/][field:yesterdayclick/]进行调用。

本文系统地介绍了在DedeCMS中调用文章浏览次数的各种方法,从基础的[field:click/]标签,到自定义字段美化,再到JS异步更新和性能优化,几乎涵盖了所有常见应用场景。

  • 新手入门: 掌握方法一方法二,即可满足基本需求。
  • 进阶提升: 学习方法三方法四,让你的网站数据展示更专业、更美观。
  • 追求极致: 实践方法五,为用户提供更好的体验,并为网站未来的高并发做好准备。

希望这篇详尽的指南能帮助你彻底解决DedeCMS浏览次数调用的问题,技术是为内容服务的,一个流畅、美观的数据展示,能让你的优质内容更具吸引力。


-- 展开阅读全文 --
头像
dede 更新文档html
« 上一篇 今天
C语言中attribute关键字的用法与作用是什么?
下一篇 » 今天

相关文章

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