如何在前端展示用户评论列表,并支持审核状态显示?
用户评论是网站活力的重要体现,它们不仅能增加内容的互动性,还能为其他访问者提供有价值的参考。安企CMS深知评论管理的重要性,提供了简洁而强大的功能,让您能够在网站前端灵活地展示评论列表,并清晰地标识评论的审核状态。
在前端展示评论列表的核心:commentList 标签
要在您的网站前端页面上展示用户评论,您需要使用AnQiCMS提供的commentList模板标签。这个标签能帮助您轻松地获取与特定文章或产品相关的评论数据。
通常情况下,评论列表会与某个具体的文档(如文章详情页或产品详情页)关联。因此,在使用commentList标签时,我们通常会指定archiveId参数,该参数的值就是当前页面文档的唯一标识ID。您可以使用{% archiveDetail with name="Id" %}标签来获取当前文档的ID。
此外,为了更好地控制评论的显示方式,您可以通过type参数来选择列表类型。当您希望评论列表支持分页功能时,将type设置为"page"是一个不错的选择;如果只需要显示固定数量的评论而不分页,则可以设置为"list"并配合limit参数。
例如,在文章详情页中,您可以这样开始获取评论数据:
{% archiveDetail archiveId with name="Id" %} {# 获取当前文档的ID,并赋值给archiveId变量 #}
<div class="comments-section">
<h3>用户评论 ({{ archive.CommentCount }}条)</h3>
{% commentList comments with archiveId=archiveId type="page" limit="10" %}
{# 遍历获取到的评论列表 #}
{% for item in comments %}
{# 这里是每条评论的展示内容 #}
{% empty %}
<p>目前还没有评论,快来抢沙发吧!</p>
{% endfor %}
{% endcommentList %}
</div>
在这个示例中,comments变量将包含所有符合条件的评论数据。for循环会逐一处理每条评论,empty块则会在没有评论时显示一段提示信息。
清晰标识审核状态
AnQiCMS在评论管理方面充分考虑了内容审核的需求,因此每条评论数据都带有一个Status字段。这个字段是区分评论是否已通过审核的关键:
- 当
Status为1时,表示评论已通过审核,可以在前端正常显示。 - 当
Status为0时,则表示评论仍在审核中,此时我们通常不将其完全公开展示,而是给予用户一个“审核中”的提示。
利用if逻辑判断标签,我们可以轻松地根据item.Status的值来控制评论的显示内容。例如,我们可以只显示已通过审核的评论内容,而对于审核中的评论,则仅显示一个用户名和“审核中”的提示,甚至可以对其内容进行截断或隐藏。
下面是一个在评论列表中展示审核状态并处理回复的示例:
{% archiveDetail archiveId with name="Id" %}
<div class="comments-section">
<h3>用户评论 ({{ archive.CommentCount }}条)</h3>
{% commentList comments with archiveId=archiveId type="page" limit="10" %}
{% for item in comments %}
<div class="comment-item {% if item.Status != 1 %}comment-pending{% endif %}">
<div class="comment-header">
<span class="comment-username">
{% if item.Status != 1 %}
<i class="icon-pending"></i> 审核中用户:{{item.UserName|truncatechars:6}}
{% else %}
{{item.UserName}}
{% endif %}
</span>
{% if item.Parent %}
<span class="reply-indicator">回复</span>
<span class="comment-parent-username">
{% if item.Parent.Status != 1 %}
审核中用户:{{item.Parent.UserName|truncatechars:6}}
{% else %}
{{item.Parent.UserName}}
{% endif %}
</span>
{% endif %}
<span class="comment-time">{{stampToDate(item.CreatedTime, "2006-01-02 15:04")}}</span>
</div>
<div class="comment-content">
{% if item.Status != 1 %}
<blockquote class="pending-message">该评论正在审核中,请耐心等待。</blockquote>
{# 如果您希望在审核中也显示部分内容,可以这样处理: #}
{# <p class="pending-content">{{item.Content|truncatechars:30}}...</p> #}
{% else %}
{% if item.Parent %}
<blockquote class="reply-quote">
{% if item.Parent.Status != 1 %}
<span class="text-muted">原评论正在审核中...</span>
{% else %}
{{item.Parent.Content|truncatechars:100}}
{% endif %}
</blockquote>
{% endif %}
<p>{{item.Content}}</p>
{% endif %}
</div>
<div class="comment-actions" data-id="{{item.Id}}" data-user="{{item.UserName}}">
{% if item.Status == 1 %}
<a class="action-btn praise-btn" data-id="praise">赞(<span class="vote-count">{{item.VoteCount}}</span>)</a>
<a class="action-btn reply-btn" data-id="reply">回复</a>
{% endif %}
</div>
</div>
{% empty %}
<p>目前还没有评论,快来抢沙发吧!</p>
{% endfor %}
{# 评论分页 #}
{% pagination pages with show="5" %}
<div class="pagination-nav">
<a class="page-link {% if pages.FirstPage.IsCurrent %}active{% endif %}" href="{{pages.FirstPage.Link}}">首页</a>
{% if pages.PrevPage %}<a class="page-link" href="{{pages.PrevPage.Link}}">上一页</a>{% endif %}
{% for pageItem in pages.Pages %}
<a class="page-link {% if pageItem.IsCurrent %}active{% endif %}" href="{{pageItem.Link}}">{{pageItem.Name}}</a>
{% endfor %}
{% if pages.NextPage %}<a class="page-link" href="{{pages.NextPage.Link}}">下一页</a>{% endif %}
<a class="page-link {% if pages.LastPage.IsCurrent %}active{% endif %}" href="{{pages.LastPage.Link}}">尾页</a>
</div>
{% endpagination %}
{% endcommentList %}
</div>
在上述代码中,我们使用了item.Parent来判断当前评论是否是对其他评论的回复,并以引用块的形式展示父级评论的部分内容。同时,stampToDate过滤器帮助我们将时间戳格式化为易读的日期时间。
评论提交表单与验证码
为了让用户能够在前端方便地提交评论,您还需要集成评论提交表单。AnQiCMS提供了一个统一的评论提交接口/comment/publish。表单中需要包含archive_id(评论所属文档ID)、user_name、content等基本信息,如果评论是对某条评论的回复,还需要提供parent_id。
为了有效防范恶意灌水或机器人评论,强烈建议您为评论表单添加验证码功能。AnQiCMS内置了验证码支持,您只需在后台开启相关设置,并在前端表单中加入特定的HTML结构和JavaScript代码即可。
”`twig
相关文章
怎样在前端模板中显示网站的友情链接列表?
在网站运营中,友情链接不仅仅是网站之间互通的桥梁,更是提升网站权重、增加外部流量、优化搜索引擎排名的重要策略之一。合理配置和展示友情链接,能够有效改善网站的SEO表现,同时为用户提供更多有价值的外部资源。AnQiCMS 作为一款高效的内容管理系统,充分考虑了这一需求,提供了简便直观的方式来管理和在前端模板中展示友情链接。 ### 后端管理:友情链接的设置与维护 要在前端页面展示友情链接
2025-11-07AnQiCMS 模板中,如何截取文章摘要并添加省略号显示?
在网站运营中,如何让文章列表页既美观又信息量充足,是大家普遍关心的问题。通常,我们不会在列表页展示文章的完整内容,而是通过一小段“摘要”来吸引读者点击。为了保持页面的整洁和专业,这些摘要往往还需要在超出一定长度时自动截断,并添加一个优雅的省略号。 AnQiCMS 作为一款功能强大的内容管理系统,在模板中提供了灵活的工具来帮助我们实现这一需求。下面,我们就来详细探讨如何在 AnQiCMS
2025-11-07如何实现文章内容中的HTML标签安全输出,避免XSS攻击?
在AnQiCMS中,我们追求的不仅是高效灵活的内容管理,更将网站安全视为核心要素。在日常的内容创作和模板开发中,一个看似简单的HTML标签输出,实则隐藏着潜在的安全风险,其中最常见的便是跨站脚本(XSS)攻击。理解AnQiCMS如何处理HTML输出,并掌握安全实践,对于构建一个坚固、可靠的网站至关重要。 ### AnQiCMS如何处理HTML内容的输出? 在AnQiCMS的模板渲染机制中
2025-11-07AnQiCMS 如何在模板中判断变量是否为空并显示默认内容?
在网站内容运营中,数据的完整性和展示的优雅性至关重要。我们经常会遇到这样的情况:某些字段的数据可能因为各种原因而缺失,比如一篇文章可能没有配图,一个产品可能没有详细描述,或者一个自定义字段可能没有填写。如果模板代码没有做相应的空值判断,轻则导致页面出现空白,影响美观,重则可能引发模板渲染错误,影响用户体验。 AnQiCMS 凭借其基于 Go 语言的高效架构和类似 Django
2025-11-07AnQiCMS 如何在模板中动态显示网站的Logo图片?
网站的Logo是品牌形象的核心,它不仅能提升网站的专业度,也方便用户快速识别和记忆您的品牌。对于AnQiCMS的用户来说,在网站模板中动态显示Logo图片是一项基本而又重要的操作。幸运的是,AnQiCMS提供了非常便捷的方式来实现这一点,让您无需编写复杂的代码就能轻松管理和展示网站Logo。 ### 管理网站Logo:后台设置是关键 要在您的AnQiCMS网站上显示Logo
2025-11-07怎样在网站内容中插入Markdown格式的文本并正确渲染为HTML?
在AnQiCMS中,将Markdown格式的文本插入内容并正确渲染为HTML,是内容运营者提高效率和产出高质量页面的重要方式。AnQiCMS内置了对Markdown编辑和渲染的支持,让您在撰写内容时既能享受Markdown的简洁高效,又能确保最终页面输出美观且结构化的HTML。 ### 启用Markdown编辑器 要开始在AnQiCMS中使用Markdown,首先需要确保其编辑器功能已启用
2025-11-07AnQiCMS 如何在模板中实现数学公式和流程图的正确显示?
在内容管理日益精细化的今天,网站不仅承载着文字和图片,更需要以专业且易懂的方式呈现复杂信息,例如数学公式和流程图。AnQiCMS 致力于提供高效、灵活的内容管理解决方案,当我们在网站上处理技术文章、学术内容或业务流程图时,如何确保这些特殊元素能够正确、美观地显示出来,就成为了一个值得探讨的问题。 AnQiCMS 本身对 Markdown 编辑器提供了良好支持,这意味着我们可以用简洁的
2025-11-07增强互动安全性:在安企CMS前端评论或留言中集成验证码的实用指南
网站的评论区和留言板是用户与网站互动的重要渠道。然而,这些互动区域也常常受到垃圾信息和自动化程序的困扰,不仅影响了网站的清洁度,也降低了用户的阅读和交流体验。验证码(CAPTCHA)正是抵御这类问题的有效屏障,它通过要求用户完成一项人类容易但计算机难以完成的任务,从而区分人类用户和恶意机器人。 对于使用安企CMS搭建的网站而言,集成验证码并非复杂之事。安企CMS系统提供了简洁明了的路径
2025-11-07