织梦dedecms调用收藏数

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

在文章列表页(如首页、列表页)调用收藏数

这是最常见的需求,比如在文章列表的摘要旁边显示一个“收藏”按钮和收藏数量。

织梦dedecms调用收藏数
(图片来源网络,侵删)

第1步:找到并打开模板文件

你需要修改的模板文件是 templets/default/list_article.htm (假设你使用的是默认模板,请根据你的实际模板路径进行修改)。

第2步:在模板中添加调用代码

list_article.htm 文件中,你希望显示收藏数的位置,添加以下代码:

[field:id function="GetFnums(@me)" /]

示例:

假设你的文章列表项(li标签)模板是这样的:

织梦dedecms调用收藏数
(图片来源网络,侵删)
<li>
    <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
    <p class="intro">[field:description function='cn_substr(@me, 100)'/]...</p>
    <div class="info">
        <span>作者:[field:writer/]</span>
        <span>时间:[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
        <span>点击:[field:click/]</span>
    </div>
</li>

你可以在 info div 中添加收藏数的显示:

<li>
    <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
    <p class="intro">[field:description function='cn_substr(@me, 100)'/]...</p>
    <div class="info">
        <span>作者:[field:writer/]</span>
        <span>时间:[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
        <span>点击:[field:click/]</span>
        <span>收藏:<strong>[field:id function="GetFnums(@me)" /]</strong></span>
    </div>
</li>

代码解释:

  • [field:id]:获取当前文章的ID。
  • function="GetFnums(@me)":这是核心,它调用了 helper_archives.php 文件中的 GetFnums() 函数,并将当前文章的ID (@me) 作为参数传递进去,函数会返回该文章的收藏总数。

第3步:更新生成页面

保存模板文件后,到DedeCMS后台的“生成” -> “更新主页HTML”或“更新栏目HTML”,重新生成你修改过的页面,就能看到效果了。


页(文章详情页)调用收藏数

页调用收藏数非常简单,因为DedeCMS已经内置了全局变量 $fields,其中就包含了收藏数。

第1步:打开模板文件

页的模板文件,通常是 templets/default/article_article.htm

第2步:添加调用代码

在需要显示的位置,直接使用以下标签:

{dede:field.fnums /}

或者你也可以使用更灵活的调用方式,与方法一类似:

[field:id function="GetFnums(@me)" /]

页都能正常工作,但 {dede:field.fnums /} 更为简洁。

示例: 下方、作者信息旁边添加:

<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:s', @me)"/}</span>
    <span>阅读:{dede:field.click/}</span>
    <span>收藏:<strong>{dede:field.fnums /}</strong></span>
</div>

在自定义页面(如首页焦点图)调用收藏数

如果你想在首页的一个自定义区域(例如一个指定的文章列表)调用收藏数,方法与列表页类似,但需要确保循环标签正确。

第1步:打开首页模板文件

打开 templets/default/index.htm

第2步:在指定循环内添加代码

假设你使用 {dede:arclist} 标签来调用文章,那么就在这个标签内部使用 function 属性。

{dede:arclist titlelen='30' row='5'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>收藏数:[field:id function='GetFnums(@me)'/]</span>
    </li>
{/dede:arclist}

代码解释:

  • {dede:arilogy...}:文章列表循环标签。
  • [field:id function='GetFnums(@me)'/]:在循环的每一次中,获取当前文章的ID,并调用 GetFnums() 函数获取其收藏数。

重要注意事项与排查

如果调用后显示为 0 或者没有显示,请检查以下几点:

  1. 确认数据库中存在收藏数据

    • 登录你的网站后台,进入“会员” -> “收藏管理”。
    • 查看是否有用户收藏过文章,如果这里一条记录都没有,那么前端自然显示为0。
    • 手动收藏一篇文章,然后再刷新页面看是否正常显示。
  2. 确认 helper_archives.php 文件存在且未被修改

    • 这个文件位于 /include/helpers/ 目录下,确保它存在并且里面的 GetFnums() 函数是完整的。
    • GetFnums() 函数的核心代码是查询 dede_member_stow 表(默认的收藏表)。
  3. 检查缓存问题

    • 有时候修改模板后,如果开启了静态页面生成,需要重新生成页面才能看到效果。
    • 可以尝试在后台的“系统” -> “系统设置” -> “清除所有HTML缓存”中清除缓存。
  4. 检查数据库表前缀

    • 如果你修改了DedeCMS的数据库表前缀(默认是 dede_),那么需要确保 GetFnums() 函数中的查询语句也相应地修改了,通常官方提供的函数是通用的,会使用系统配置 $cfg_dbprefix,所以一般不会出问题。
场景 调用代码 说明
文章列表页 [field:id function="GetFnums(@me)" /] 最常用,适用于 list_xxx.htm 模板。
{dede:field.fnums /}[field:id function="GetFnums(@me)" /] 内容页有内置变量,{dede:field.fnums /} 更简单。
自定义页面/首页 [field:id function='GetFnums(@me)'/] {dede:arclist} 等循环标签内部使用。

希望这份详细的指南能帮助你成功在织梦DedeCMS中调用收藏数!

-- 展开阅读全文 --
头像
织梦排除flag sql查询
« 上一篇 2025-12-22
c语言名题精选百则技巧篇.pdf
下一篇 » 2025-12-22

相关文章

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

目录[+]