织梦列表页调用点击数

99ANYc3cd6
预计阅读时长 14 分钟
位置: 首页 织梦建站 正文

使用内置的 click 标签(最简单、最推荐)

这是织梦官方提供最直接、最简单的方法,适用于绝大多数情况。

适用场景

标准的列表页模板,如 /templets/default/list_article.htm

操作步骤

  1. 找到列表循环标签 打开你的列表页模板文件,找到文章列表的循环部分,通常是这样的代码:

    {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}
  2. 在循环内添加点击数调用标签<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 字段读取当前文章的点击次数并显示出来。

优点

  • 简单高效:无需任何修改,直接调用。
  • 性能好:数据直接从数据库读取,没有额外开销。

使用自定义函数(灵活、可扩展)

如果你想对点击数进行格式化,比如在数字前加上“人气:”或在数字后面加上“次”,或者进行其他计算,可以使用自定义函数。

适用场景

需要对点击数进行特殊处理或格式化显示。

操作步骤

  1. 创建自定义函数 在你的织梦网站根目录下,找到 /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';
        }
    }
  2. 在列表页模板中调用自定义函数 使用 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或其他方式动态加载文章列表时。

操作步骤

  1. 在模板中编写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和织梦数据库结构。

重要注意事项

  1. 点击数不增加的问题 如果你在列表页看到点击数,但点击文章进入详情页后,点击数没有增加,请检查:

    • 文章详情页模板:确保详情页有 [field:click/]
    • 页调用:在详情页的适当位置(如标题下方)加上 [field:click/]
    • JS点击统计代码:织梦默认通过JS来增加点击数,请确保你的详情页加载了织梦的核心JS文件(通常是 dedecms.js),并且没有被其他JS库冲突或禁用。
  2. 性能考虑

    • 对于列表页,强烈推荐使用方法一{dede:list} 在查询数据库时已经把 click 字段查询出来了,直接使用 [field:click/] 是零开销的。
    • 避免在列表循环内使用方法三,如果在 {dede:list} 循环内部对每篇文章都执行一次 GetOneArchive,会导致大量的数据库查询,会使你的网站变得非常卡顿。
方法 适用场景 优点 缺点
[field:click/] 绝大多数标准列表页 最简单、最高效、性能最好 灵活性较低,只能直接显示数字
自定义函数 需要对点击数进行格式化或特殊处理 灵活、可扩展、代码复用 需要修改 extend.func.php 文件
手动获取 非标准列表、特殊统计需求 功能强大,不受标签限制 性能较低,代码复杂,不推荐在列表循环内使用

对于99%的需求,直接使用方法一 [field:click/] 就完全足够了

-- 展开阅读全文 --
头像
织梦入学会东西在哪儿换?
« 上一篇 02-27
织梦栏目页加友情链接
下一篇 » 02-27

相关文章

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