正在加载文档...
评论模板标签
iCMS 评论系统标签文档
评论标签 (CommentFunc)
评论标签用于获取和显示评论数据,支持列表展示、表单提交等功能。
comment:list 标签
获取评论列表数据。
支持参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| row | 整数 | 10 | 每页显示条数 |
| cache | 布尔值 | 0 | 是否缓存结果 |
| time | 整数 | -1 | 缓存时间(秒) |
| page | 布尔值 | 0 | 是否启用分页 |
| status | 整数 | 1 | 状态(1:正常) |
| appid | 整数 | - | 应用ID |
| userid | 整数 | - | 用户ID |
| cid | 整数 | - | 分类ID |
| iid | 整数 | - | 内容ID |
| indexid | 整数 | - | 索引ID(同iid) |
| orderby | 字符串 | id | 排序字段 |
| by | 字符串 | DESC | 排序方式(ASC/DESC) |
返回数据结构
[
[
'id' => 评论ID,
'appid' => 应用ID,
'iid' => 内容ID,
'cid' => 分类ID,
'userid' => 用户ID,
'username' => 用户名,
'content' => 评论内容,
'pubdate' => 发布时间,
'status' => 状态,
'statusText' => 状态文本,
'user' => [用户信息],
'apps' => [应用信息],
'lou' => 楼层数,
'total' => 总评论数
],
// 更多评论...
]
使用示例
<div class="comment-list">
<h3>评论列表</h3>
<!--{iCMS:comment:list iid='$article.id' appid='1' row='10' page='1' cache='1'}-->
<div class="comment-item">
<div class="user">
<img src="<!--{$comment_list.user.avatar}-->" alt="<!--{$comment_list.user.name}-->">
<span><!--{$comment_list.user.name}--></span>
</div>
<div class="content"><!--{$comment_list.content}--></div>
<div class="meta">
<span><!--{$comment_list.pubdate|date:'Y-m-d H:i:s'}--></span>
<span><!--{$comment_list.lou}-->楼</span>
</div>
</div>
<!--{iCMSelse}-->
<div class="no-comment">暂无评论</div>
<!--{/iCMS}-->
</div>
<!--{iCMS:pages
page_style='3'
item='<li class="page-item %s">%s</li>'
link='<a class="page-link" href="%s" data-pageno="%d" %s>%s</a>'
}-->
<nav class="mb-4" caria-label="Page navigation">
<ul class="pagination justify-content-center flex-wrap">
<!--{$iCMS.PAGE.NAV}-->
</ul>
</nav>
comment:data 标签
获取单条评论数据。
支持参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| id | 整数 | - | 评论ID |
| userid | 整数 | - | 用户ID |
| status | 整数 | 1 | 状态 |
| loop | 布尔值 | 0 | 是否循环输出 |
返回数据结构
{
'id' => 评论ID,
'appid' => 应用ID,
'iid' => 内容ID,
'cid' => 分类ID,
'userid' => 用户ID,
'username' => 用户名,
'content' => 评论内容,
'pubdate' => 发布时间,
'status' => 状态,
'user' => [用户信息]
}
使用示例
<!--{iCMS:comment:data id='1'}-->
<div class="comment-detail">
<div class="user">
<img src="<!--{$comment_data.user.avatar}-->" alt="<!--{$comment_data.user.name}-->">
<span><!--{$comment_data.user.name}--></span>
</div>
<div class="content"><!--{$comment_data.content}--></div>
<div class="meta">
<span><!--{$comment_data.pubdate|date:'Y-m-d H:i:s'}--></span>
</div>
</div>
comment:form 标签
显示评论表单。
支持参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| iid | 整数 | - | 内容ID(必填) |
| cid | 整数 | - | 分类ID |
| appid | 整数 | - | 应用ID(必填) |
| title | 字符串 | - | 标题(必填) |
| userid | 整数 | - | 用户ID |
| username | 字符串 | - | 用户名 |
| display | 字符串 | - | 显示方式(iframe等) |
| hidden | 布尔值 | 0 | 是否隐藏 |
| class | 字符串 | - | 自定义CSS类 |
| throw | 布尔值 | true | 是否抛出错误 |
使用示例
<!--{iCMS:comment:form iid='$article.id' appid='1' cid='$article.cid' title='$article.title'}-->
comment:vlist 标签
显示评论列表视图。
使用示例
<!--{iCMS:comment:vlist}-->
评论回复标签 (CommentReplyFunc)
评论回复标签用于获取和显示评论回复数据。
comment:reply:list 标签
获取评论回复列表。
支持参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| row | 整数 | 10 | 每页显示条数 |
| cache | 布尔值 | 0 | 是否缓存结果 |
| time | 整数 | -1 | 缓存时间(秒) |
| page | 布尔值 | 0 | 是否启用分页 |
| status | 整数 | 1 | 状态 |
| comment_id | 整数 | - | 评论ID |
| userid | 整数 | - | 用户ID |
| by | 字符串 | ASC | 排序方式(ASC/DESC) |
| isRaw | 布尔值 | 0 | 是否原始输出内容 |
返回数据结构
[
[
'id' => 回复ID,
'comment_id' => 评论ID,
'userid' => 用户ID,
'username' => 用户名,
'reply_userid' => 被回复用户ID,
'reply_username' => 被回复用户名,
'content' => 回复内容,
'pubdate' => 发布时间,
'status' => 状态,
'status_text' => 状态文本,
'user' => [用户信息],
'reply_user' => [被回复用户信息],
'lou' => 楼层数,
'total' => 总回复数,
'is_up' => 是否点赞,
'is_down' => 是否点踩
],
// 更多回复...
]
使用示例
<div class="reply-list">
<h4>回复列表</h4>
<!--{iCMS:comment:reply:list comment_id='$comment.id' row='5' page='1' cache='1'}-->
<div class="reply-item">
<div class="user">
<img src="<!--{$comment_reply_list.user.avatar}-->" alt="<!--{$comment_reply_list.user.name}-->">
<span><!--{$comment_reply_list.user.name}--></span>
<!--{if $comment_reply_list.reply_user}-->
回复
<img src="<!--{$comment_reply_list.reply_user.avatar}-->" alt="<!--{$comment_reply_list.reply_user.name}-->">
<span><!--{$comment_reply_list.reply_user.name}--></span>
<!--{/if}-->
</div>
<div class="content"><!--{$comment_reply_list.content}--></div>
<div class="meta">
<span><!--{$comment_reply_list.pubdate|date:'Y-m-d H:i:s'}--></span>
<span><!--{$comment_reply_list.lou}-->楼</span>
</div>
</div>
<!--{iCMSelse}-->
<div class="no-reply">暂无回复</div>
<!--{/iCMS}-->
</div>
<!--{iCMS:pages
page_style='3'
item='<li class="page-item %s">%s</li>'
link='<a class="page-link" href="%s" data-pageno="%d" %s>%s</a>'
}-->
<nav class="mb-4" caria-label="Page navigation">
<ul class="pagination justify-content-center flex-wrap">
<!--{$iCMS.PAGE.NAV}-->
</ul>
</nav>
最佳实践
完整评论系统示例
<!-- 评论表单 -->
<!--{iCMS:comment:form iid='$article.id' appid='1' cid='$article.cid' title='$article.title'}-->
<!-- 评论列表 -->
<!--{iCMS:comment:list iid='$article.id' appid='1' row='10' page='1' cache='1'}-->
<!--{if $comment_lists_total>0}-->
<div class="comment-list">
<h3>评论列表(<!--{$comment_lists_total}-->条)</h3>
<!--{foreach key="key" value="comment" from="$comment_list"}-->
<div class="comment-item" id="comment-<!--{$comment.id}-->">
<div class="user">
<img src="<!--{$comment.user.avatar}-->" alt="<!--{$comment.user.name}-->">
<span><!--{$comment.user.name}--></span>
</div>
<div class="content"><!--{$comment.content}--></div>
<div class="meta">
<span><!--{$comment.pubdate|date:'Y-m-d H:i:s'}--></span>
<span><!--{$comment.lou}-->楼</span>
<a href="javascript:;" class="reply-btn" data-id="<!--{$comment.id}-->">回复</a>
</div>
<!-- 回复列表 -->
<!--{iCMS:comment:reply:list comment_id='$comment.id' row='5' cache='1'}-->
<!--{if $comment_reply_lists_total>0}-->
<div class="reply-list">
<!--{foreach key="rkey" value="reply" from="$comment_reply_list"}-->
<div class="reply-item">
<div class="user">
<span><!--{$reply.user.name}--></span>
<!--{if $reply.reply_user}-->
回复
<span><!--{$reply.reply_user.name}--></span>
<!--{/if}-->
</div>
<div class="content"><!--{$reply.content}--></div>
<div class="meta">
<span><!--{$reply.pubdate|date:'Y-m-d H:i:s'}--></span>
</div>
</div>
<!--{/foreach}-->
</div>
<!--{/if}-->
<!--{/iCMS}-->
</div>
<!--{/foreach}-->
</div>
<div class="paging"><!--{$comment_lists_page.pagination}--></div>
<!--{else}-->
<div class="no-comment">暂无评论</div>
<!--{/if}-->
性能优化建议
-
合理使用缓存
<!--{iCMS:comment:list row='10' cache='1' time='300'}-->⚠️ 对于评论数据,建议缓存时间不要太长,以保证数据的实时性。
-
分页显示
对于评论数量较多的页面,始终使用分页:
<!--{iCMS:comment:list row='10' page='1' cache='1'}--> -
按需加载回复
可以考虑使用AJAX按需加载回复内容,减轻页面初始加载压力。
安全注意事项
-
XSS防护
评论内容可能包含恶意代码,系统会自动过滤,但在显示时也需注意。
-
权限控制
根据用户权限显示不同的评论操作按钮:
<!--{if $user.uid}--> <a href="javascript:;" class="reply-btn">回复</a> <!--{else}--> <a href="<!--{$site.url}-->/user/login.php">登录后回复</a> <!--{/if}--> -
敏感词过滤
系统会自动过滤敏感词,但在模板中也可以添加额外的提示。
调试技巧
- 开启调试模式
<!--{iCMS:comment:list db_debug='1'}-->