首页 / 开发文档 / 文章评论

文章评论

评论区与评论数。站点关了评论、或拿不到内容 ID 时它们输出空串 —— 模板里不用写开关判断。

适用范围:详情页。

评论区 {naicha:comments}

<!-- [详情] 评论区(列表 + 表单)-->
<section class="comments">
  <h2>评论 <span>{naicha:commentcount}</span></h2>
  {naicha:comments}
</section>

<!-- [详情] 只要列表、不要表单(比如表单放在页面别处)-->
{naicha:comments num="20" form="0"}
num显示多少条
form0 = 只列评论、不显示发表表单

站点关了评论、或当前拿不到内容 ID 时,它输出空串(不报错、也不留一个空壳)。 所以模板里不用写「如果开了评论就…」。

评论数 {naicha:commentcount}

<!-- [详情] 标题旁边那一个数字 -->
<h1>{detail.title}</h1>
<div class="meta">浏览 {detail.hits} · 评论 {naicha:commentcount}</div>

属性和 comments 一样(num / form),但它只输出数字。 ⚠️ 它算的是当前内容的评论数 —— 想在列表里显示每篇的评论数,得用 {naicha:list} 那一行自己的字段, 循环里用这个标签拿到的不是你要的数。

{naicha:commentlist} —— 自己想排评论

{naicha:comments} 是整块输出(列表 + 表单,版式固定); 要按自己的设计排,用 commentlist 拿行:

{naicha:commentlist num="10"}
  <div class="cm">
    <b>{comment.i}. {comment.author}</b>
    <span>{comment.when}</span>
    <p>{comment.content}</p>

    {naicha:if var="comment.reply_count" gt="0"}
    <div class="replies">
      {naicha:loop from="comment.replies" as="r"}
        <p><b>{r.author}</b>(管理员回复){r.content}</p>
      {/naicha:loop}
    </div>
    {/naicha:if}
  </div>
{/naicha:commentlist}

<!-- 分页与总数(和 list 一样是「最近一次」的语义)-->
{naicha:if var="commentPages" gt="1"}共 {commentTotal} 条 / 第 {commentPage} 页{/naicha:if}

行里能用的字段

{comment.id} {comment.pid} {comment.uid}编号 / 父评论 id(主评论为 0)/ 会员 id(游客为 0)
{comment.author} 昵称;没填是「访客」
{comment.letter} 昵称首字母,做头像用
{comment.content} 评论正文
{comment.created_at} {comment.when}原始时间 / 人性化时间(刚刚、3 分钟前)
{comment.is_admin} {comment.reply_by}是不是管理员回复 / 回复人
{comment.replies} {comment.reply_count}回复数组(配 {naicha:loop})/ 回复条数
{comment.i} {comment.n} {comment.index}序号
{comment.likes} {comment.oppose}这条评论被赞 / 被踩的次数
{comment.likeslink} {comment.opposelink}赞 / 踩的地址,直接当 href(点一次算一票,重复点不叠加)
{comment.parent_author}回复里才有:被回复那一楼的作者名,用来写「回复 @某某」
<!-- 给评论点赞:和内容的 likeslink 一样用法 -->
<a class="like" href="{comment.likeslink}">赞 {comment.likes}</a>
<a class="down" href="{comment.opposelink}">踩 {comment.oppose}</a>

<!-- 回复里标出「回复谁的」 -->
<p><b>{r.author}</b> 回复 <em>{r.parent_author}</em>:{r.content}</p>
⚠️ 邮箱和 IP 不往模板里给 —— 那是访客的隐私,页面上不该出现这个字段。 需要用它算头像的话,{comment.letter} 已经算好了首字母。

站点关了评论、或拿不到内容 ID 时,它输出空串,和 {naicha:comments} 一致。
没找到答案? 可以在 联系我们 留言说明使用场景,我们会补充进文档。