首先通过SQL查询或灵动标签调用评论数量,再用灵动标签循环输出评论列表,需注意表名、字段匹配及安全处理。

在使用帝国CMS建站时,很多用户希望在文章列表或内容页中显示对应文章的评论数量以及评论列表。这不仅能提升互动感,还能增强用户体验。下面详细介绍如何调用文章的评论数量和评论列表。
调用文章评论数量
要在列表页或内容页显示某篇文章的评论总数,可以通过以下几种方式实现:
方法一:使用SQL函数调用(适用于列表页)
在列表模板(list.var)中使用PHP代码查询评论数:- 开启“使用程序代码”选项(在模板变量中勾选“使用程序代码”)
- 使用如下代码:
$select = $empire->query("SELECT COUNT(*) as total FROM {$dbtbpre}enewspl_1 WHERE id='$r[id]' AND classid='$r[classid]'");
$plnum = $empire->fetch($select);
$plcount = $plnum['total'] ? $plnum['total'] : 0;
$listtemp = '说明:此方法通过查询评论表 enewspl_1(根据模型不同可能有变化)统计对应ID和栏目ID的文章评论数。
方法二:使用灵动标签调用(推荐用于内容页)
在内容页模板中,可直接使用灵动标签结合PHP函数:
gettotal("SELECT COUNT(*) AS total FROM {$dbtbpre}enewspl_1 WHERE id='$navinfor[id]' AND classid='$class_r[$GLOBALS[navclassid]][classid]'");
?>
评论数量:= $comment_num ?>
注意:需确保开启模板支持PHP代码功能。
调用文章评论列表
如果想在内容页下方展示该文章的所有评论内容,可以使用灵动标签循环输出评论数据。
使用灵动标签调用评论列表:
[e:loop={"select saytext,uname,ip,zftime from {$dbtbpre}enewspl_1 where classid='$navinfor[classid]' and id='$navinfor[id]' order by zftime desc limit 10",10,24,0}]
说明:
- 查询字段包括评论内容(saytext)、用户名(uname)、IP(ip)、时间(zftime)
- 条件限制为当前文章id和classid
- 按时间倒序排列,最多显示10条
注意事项:
- 评论表名如 enewspl_1 中的“1”代表系统模型ID,文章模型一般为1,其他模型请查看数据库结构
- 若开启评论审核,需在SQL中添加 and checked=1 条件
- 建议对评论内容进行 htmlspecialchars() 处理,防止XSS攻击
优化与扩展建议
为了提高性能,频繁调用评论数时可考虑缓存机制或利用帝国CMS自带的评论统计字段(如信息表中的 plnum 字段)。
也可以通过自定义函数封装常用查询,便于多处调用维护。
基本上就这些。只要理解了帝国CMS的数据结构和模板语法,调用评论数量和列表并不复杂,关键是注意表名、字段和权限设置。











评论内容:=htmlspecialchars($bqr[saytext])?>