正在加载文档...
                            
                        评论模板标签
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'}-->