织梦文章浏览次数如何正确调用?

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

下面我将为你详细讲解在不同场景下如何调用文章浏览次数,并附上最常用和最完整的代码示例。

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

核心原理

织梦的文章浏览次数数据存储在 dede_archives 表的 click 字段中,调用的本质就是读取这个字段的值。


在文章详情页(article_article.htm)中调用

这是最简单的情况,因为文章详情页已经加载了当前文章的全部数据,包括浏览次数。

方法1:使用 {dede:field} 标签(推荐)

这是最直接、最常用的方法。

浏览次数:<span>{dede:field.click/}</span>

代码解释:

织梦文章浏览次数的调用
(图片来源网络,侵删)
  • {dede:field} 用于调用文章当前字段的值。
  • click 是字段的名称,直接对应 dede_archives 表中的 click 字段。
  • 表示标签闭合。

示例: 你可以将其整合到文章的发布信息区域,

<div class="article-info">
    <span>作者:{dede:field.writer/}</span>
    <span>来源:{dede:field.source/}</span>
    <span>发布时间:{dede:field.pubdate function="MyDate('Y-m-d H:i',@me)"/}</span>
    <span>浏览次数:<strong>{dede:field.click/}</strong></span>
</div>

在列表页(如 index.htm, list_article.htm)中调用

在列表页,你通常需要循环输出多篇文章,这时需要使用 {dede:arclist}{dede:list}

方法1:使用 {dede:arclist} 标签(最常用)

{dede:arclist} 是调用文章列表最强大的标签,支持自定义字段。

{dede:arclist titlelen='30' row='10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>浏览:[field:click/]</span>
    </li>
{/dede:arclist}

代码解释:

  • [field:click/]:在 {dede:arclist} 内部,使用 [field:字段名/] 的语法来调用当前文章的字段,这里的 click 同样指向浏览次数。

方法2:使用 {dede:list}

{dede:list} 通常用于栏目列表页,语法与 arclist 类似。

织梦文章浏览次数的调用
(图片来源网络,侵删)
{dede:list pagesize='10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>浏览:[field:click/]</span>
    </li>
{/dede:list}

代码解释:

  • 同样是使用 [field:click/] 来调用。

在首页(index.htm)或其他自定义列表页调用

首页调用文章列表和列表页的原理完全一样,都是使用 {dede:arclist}

{dede:arclist titlelen='40' row='5'}
    <div class="post-item">
        <h2><a href="[field:arcurl/]">[field:title/]</a></h2>
        <p class="meta">发布于:[field:pubdate function="MyDate('Y-m-d',@me)"] | 浏览:[field:click/]</p>
    </div>
{/dede:arclist}

重要补充:如何实现浏览次数自动增加?

仅仅显示浏览次数是不够的,我们通常希望用户每次访问时,次数都能自动增加,这需要修改模板文件并添加PHP代码。

步骤1:修改文章详情页模板 (article_article.htm)

显示之前,你需要加入一段PHP代码来执行“增加点击数”的操作,这段代码通常放在 {dede:field.body/} 的前面。

{dede:include filename="head.htm"/}
<div class="main">
    <!-- 在这里加入增加点击数的代码 -->
    <php>
        $aid = $arcID;
        $dsql->ExecuteNoneQuery("Update `dede_archives` SET click=click+1 WHERE id='$aid'");
    </php>
    <!-- 文章标题等信息 -->
    <h1>{dede:field.title/}</h1>
    <!-- 调用并显示浏览次数 -->
    <div class="info">
        <span>浏览次数:<strong>{dede:field.click/}</strong></span>
        ... 其他信息 ...
    </div>
    <!-- 文章内容 -->
    {dede:field.body/}
</div>
{dede:include filename="footer.htm"/}

代码解释:

  • <php> ... </php>:这是在织梦模板中直接嵌入PHP代码的语法。
  • $aid = $arcID;:获取当前文章的ID,$arcID 是织梦在详情页中预设的变量。
  • $dsql->ExecuteNoneQuery(...):执行一个不返回结果的SQL查询。
  • "Updatedede_archivesSET click=click+1 WHERE id='$aid'":这是核心SQL语句,意思是“在 dede_archives 表中,找到ID为当前文章ID的记录,将其 click 字段的值加1”。

步骤2:修改列表页模板(可选,但推荐)

如果你希望在用户点击进入文章详情页时才增加计数,那么只需要在详情页做上述操作即可,但如果你希望在列表页的链接被点击时就增加计数(不常见),你需要修改链接。

错误的做法: 直接给 [field:arcurl/] 加 onclick 事件,因为这样会导致每次页面刷新都会增加计数,而不是每次点击。

正确的做法(不推荐,会增加服务器负担): 可以创建一个专门用于计数的跳转页面(click.php),然后在列表页的链接指向这个跳转页面,由 click.php 完成计数后再跳转到真正的文章页,这种方法比较复杂,一般不采用。

最佳实践: 只修改文章详情页 (article_article.htm) 的模板,这是最标准、最高效的方式,只有用户真正阅读了文章,计数才增加,这符合逻辑。


总结与最佳实践

  1. 显示浏览次数

    • 详情页{dede:field.click/}
    • 列表页/首页[field:click/] (用在 {dede:arclist}{dede:list} 标签内部)
  2. 增加浏览次数

    • 只需在 文章详情页模板 (article_article.htm)<body> 标签内、{dede:field.body/} 标签前,加入以下PHP代码块即可:
      <php>
      $aid = $arcID;
      $dsql->ExecuteNoneQuery("Update `dede_archives` SET click=click+1 WHERE id='$aid'");
      </php>
  3. 注意

    • 确保你的模板文件没有被缓存,如果修改后看不到效果,请到后台“系统” -> “性能选项” -> “更新缓存”中清除缓存。
    • 确保你的数据库表前缀是 dede_,如果不是,请将SQL语句中的 dede_archives 修改为你自己的表前缀。

遵循以上步骤,你就可以完美地在织梦CMS中实现文章浏览次数的调用和自动增加了。

-- 展开阅读全文 --
头像
织梦如何远程下载图片与资源?
« 上一篇 今天
dede如何批量修改tags?
下一篇 » 今天

相关文章

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