dede如何调用文章评论数?

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

在文章列表页(如首页、列表页)调用评论数

这是最常见的需求,比如在首页的文章列表中显示每篇文章的评论数量。

dede 调用评论数
(图片来源网络,侵删)

核心代码

在文章列表的循环标签 {dede:list}{dedarclist} 内部,使用以下代码:

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

完整示例

假设你的首页文章列表模板文件是 index_article.htm,你希望标题后面显示评论数。

{dede:arclist row="8" titlelen="30"}
  <li>
    <a href="[field:arcurl/]">[field:title/]</a>
    <span>评论:[field:id function="GetTotalArc(@me)"/]</span>
  </li>
{/dede:arclist}

代码解释:

  • {dede:arclist ...}: 这是 DedeCMS 的文章列表循环标签,用于获取一篇文章列表。
  • [field:id ...]: 这是获取当前文章 ID 的字段。
  • function="GetTotalArc(@me)": 这是关键部分。
    • function: 表示调用一个函数。
    • GetTotalArc: 这是 DedeCMS 内置的一个专门用于 获取文章总评论数(包括子评论/回复) 的函数。
    • @me: 这是一个占位符,代表当前字段的原始值,在这里就是 [field:id] 的值,也就是文章的 ID。
    • [field:id function="GetTotalArc(@me)"] 的完整意思是:获取当前文章的 ID,然后把这个 ID 传递给 GetTotalArc 函数,并将函数返回的评论数显示出来。

页(文章详情页)调用评论数

在文章详情页,你同样可以使用 GetTotalArc 函数来获取当前文章的总评论数。

dede 调用评论数
(图片来源网络,侵删)

核心代码

页模板(如 article_article.htm)中,直接使用:

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

完整示例

在文章详情页的某个位置,比如标题下方或评论区上方,显示评论总数。

<h1>[field:title/]</h1>
<div class="info">
  发布时间:[field:pubdate function="MyDate('Y-m-d H:i:s',@me)"/] 
  作者:[field:writer/] 
  浏览量:[field:click/] 
  评论数:<strong>[field:id function="GetTotalArc(@me)"]</strong>
</div>
[field:body/]
<!-- 评论区 -->
{dede:feedback}
...
{/dede:feedback}

调用当前文章的评论条数(不包括回复)

如果你只想获取一级评论的数量,而不包括对评论的回复,可以使用 GetOneComments 函数。

核心代码

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

GetTotalArc 的区别:

dede 调用评论数
(图片来源网络,侵删)
  • GetTotalArc(): 总评论数,包含所有层级的评论和回复。
  • GetOneComments(): 一级评论数,只计算用户直接对文章发表的评论,不计算对评论的回复。

使用场景

  • 在文章列表页,如果想显示一个更简洁的评论数(比如只显示“5条评论”而不是“5条讨论”),GetOneComments 可能更合适。
  • 在详情页,如果想区分“评论”和“回复”,可以先调用 GetOneComments 显示评论数,再用其他方式展示回复。

在自定义SQL或PHP代码中调用

如果你需要在更复杂的地方调用评论数,比如在自定义模型页面或通过PHP代码,可以直接调用 DedeCMS 的数据库查询函数。

核心PHP代码

<?php
// 1. 引入 DedeCMS 的核心文件
// (如果是在模板中,通常已经全局化,无需再次引入)
require_once(dirname(__FILE__)."/include/common.inc.php");
// 2. 定义文章ID
$aid = 10; // 假设你要查询的文章ID是 10
// 3. 使用 DedeCMS 的内置函数(推荐)
// 获取总评论数(包括回复)
$total_comments = GetTotalArc($aid);
// 获取一级评论数
$one_comments = GetOneComments($aid);
echo "文章ID为 {$aid} 的总评论数是: {$total_comments}<br>";
echo "文章ID为 {$aid} 的一级评论数是: {$one_comments}";
// 4. 或者直接查询数据库(不推荐,除非有特殊需求)
/*
$dsql = new DedeSql(false);
$dsql->SetQuery("SELECT COUNT(*) as c FROM `dede_feedback` WHERE `aid` = '$aid' AND `ischeck` = 1");
$dsql->Execute();
$total_comments_db = $dsql->GetField('c');
echo "<br>通过数据库查询的总评论数是: {$total_comments_db}";
$dsql->Close();
*/
?>

总结与建议

需求场景 推荐代码 说明
文章列表页 [field:id function="GetTotalArc(@me)"/] 最常用,显示所有评论和回复的总数。
文章详情页 [field:id function="GetTotalArc(@me)"/] 同上,用于展示当前文章的完整评论情况。
只需一级评论 [field:id function="GetOneComments(@me)"/] 当你只想统计用户直接评论,不包含回复时使用。
PHP代码中调用 GetTotalArc($aid) 在非模板文件中,通过PHP函数直接获取。

最佳实践:

  • 优先使用 GetTotalArc:在绝大多数情况下,这个函数能满足需求,并且是 DedeCMS 官方提供的标准方法,兼容性最好。
  • 检查缓存:DedeCMS 有强大的缓存机制,如果你修改了模板但看到的数据没有更新,请记得在后台“系统 -> 站点缓存管理”中清空缓存再刷新页面。
  • 权限问题GetTotalArc 函数会自动过滤掉未审核的评论(ischeck=0),所以它只计算已公开的评论数,这通常是符合预期的。

希望这些信息能帮助你成功调用 DedeCMS 的评论数!

-- 展开阅读全文 --
头像
strlcpy和strcpy有何区别?
« 上一篇 04-12
_export在C语言中如何使用?
下一篇 » 04-12

相关文章

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

目录[+]