如何在AnQiCMS中显示文档的评论列表并进行分页?

📅 👁️ 69

在安企CMS中,为文档页面添加评论列表并实现分页功能,是提升用户互动体验的关键一步。这不仅能让访客参与讨论,分享观点,也为网站内容带来了更多活力。安企CMS为此提供了直观且强大的模板标签,让我们可以轻松实现这些功能。

整合评论功能到您的文档详情页

通常,评论列表和评论表单会集成在文档的详情页面上。在安企CMS中,文档详情页的模板文件通常位于类似 archive/detail.html 的位置。在开始之前,我们需要确保文档详情页能够正确获取到当前文档的唯一标识,这通常通过 archiveDetail 标签实现,例如,获取当前文档的ID:{% archiveDetail with name="Id" %}

1. 展示文档的评论列表

安企CMS提供了 commentList 标签来获取和显示文档的评论。这个标签非常灵活,可以用来获取特定文档的评论,并支持多种显示方式,包括列表模式(list)和分页模式(page)。

要在文档详情页显示评论列表并准备进行分页,您可以这样使用 commentList 标签:

<div class="comments-section">
    <h3>用户评论</h3>
    {% commentList comments with archiveId=archive.Id type="page" limit="10" %}
        {% for item in comments %}
        <div class="comment-item">
            <div class="comment-meta">
                <span>
                    {% if item.Status != 1 %}
                    审核中:{{item.UserName|truncatechars:6}}
                    {% else %}
                    {{item.UserName}}
                    {% endif %}
                </span>
                {% if item.Parent %}
                <span>回复</span>
                <span>
                    {% if item.Parent.Status != 1 %}
                    审核中:{{item.Parent.UserName|truncatechars:6}}
                    {% else %}
                    {{item.Parent.UserName}}
                    {% endif %}
                </span>
                {% endif %}
                <span>于 {{stampToDate(item.CreatedTime, "2006-01-02 15:04")}} 发布</span>
            </div>
            <div class="comment-content">
                {% if item.Parent %}
                <blockquote>
                    {% if item.Parent.Status != 1 %}
                    该内容正在审核中:{{item.Parent.Content|truncatechars:9}}
                    {% else %}
                    {{item.Parent.Content|safe}}
                    {% endif %}
                </blockquote>
                {% endif %}
                {% if item.Status != 1 %}
                    该内容正在审核中:{{item.Content|truncatechars:9}}
                {% else %}
                {{item.Content|safe}}
                {% endif %}
            </div>
            <div class="comment-actions">
                <a class="praise-button" data-id="{{item.Id}}">赞(<span class="vote-count">{{item.VoteCount}}</span>)</a>
                <a class="reply-button" data-id="{{item.Id}}" data-user="{{item.UserName}}">回复</a>
            </div>
        </div>
        {% empty %}
        <p>目前还没有评论,期待您的第一条评论!</p>
        {% endfor %}
    {% endcommentList %}
</div>

在这段代码中,我们:

  • 使用 {% commentList comments with archiveId=archive.Id type="page" limit="10" %} 来获取评论。
    • archiveId=archive.Id 确保获取的是当前文档的评论。archive.Id 是通过外层文档详情模板中自动或手动获取的当前文档ID。
    • type="page" 是启用分页的关键,它会告诉系统您需要分页数据。
    • limit="10" 则指定了每页显示10条评论。
  • 通过 {% for item in comments %} 循环遍历每一条评论。
  • 显示了评论者的用户名(item.UserName)、评论内容(item.Content)和发布时间(item.CreatedTime,使用 stampToDate 过滤器格式化)。
  • 特别处理了回复(通过 item.Parent 判断是否有上级评论)和评论的审核状态(item.Status != 1)。
  • 为评论内容和父级评论内容添加了 |safe 过滤器,以确保HTML内容(如果评论支持富文本的话)能正确解析而不是被转义。
  • 添加了“赞”和“回复”按钮,它们通常需要JavaScript配合后端API进行交互。

2. 实现评论列表的分页

commentList 标签以 type="page" 模式使用时,它会提供一个 pages 对象,这个对象包含了所有分页所需的信息。我们可以使用 pagination 标签来根据这些信息生成分页导航。

紧接着上面的评论列表代码,您可以添加以下分页代码:

<div class="pagination-section">
    {% pagination pages with show="5" %}
    <ul class="pagination-list">
        <li class="pagination-item {% if pages.FirstPage.IsCurrent %}active{% endif %}"><a href="{{pages.FirstPage.Link}}">{{pages.FirstPage.Name}}</a></li>
        {% if pages.PrevPage %}
            <li class="pagination-item"><a href="{{pages.PrevPage.Link}}">{{pages.PrevPage.Name}}</a></li>
        {% endif %}
        {% for item in pages.Pages %}
            <li class="pagination-item {% if item.IsCurrent %}active{% endif %}"><a href="{{item.Link}}">{{item.Name}}</a></li>
        {% endfor %}
        {% if pages.NextPage %}
            <li class="pagination-item"><a href="{{pages.NextPage.Link}}">{{pages.NextPage.Name}}</a></li>
        {% endif %}
        <li class="pagination-item {% if pages.LastPage.IsCurrent %}active{% endif %}"><a href="{{pages.LastPage.Link}}">{{pages.LastPage.Name}}</a></li>
    </ul>
    <p class="pagination-info">总评论数:{{pages.TotalItems}}条,共{{pages.TotalPages}}页,当前第{{pages.CurrentPage}}页。</p>
    {% endpagination %}
</div>

这里:

  • {% pagination pages with show="5" %} 使用 pages 对象生成分页。
  • show="5" 参数限制了中间页码最多显示5个。
  • 我们遍历了 pages 对象中的 FirstPage (首页), PrevPage (上一页), Pages (中间页码数组), NextPage (下一页), LastPage (末页),并根据 IsCurrent 字段为当前页添加 active 类。
  • item.Link 提供了正确的页码链接,item.Name 提供了页码文字(如“1”、“2”等)。
  • 最后,还显示了总评论数、总页数和当前页数,让用户对评论概况一目了然。

3. 添加评论提交表单

为了让用户能够发布评论,我们需要一个提交表单。这个表单通常包含用户名、评论内容,以及一个隐藏字段来指定评论所属的文档ID。

”`twig

<h3>发表您的评论</h3>
<form method="post" action="/comment/publish">
    <input type="hidden" name="archive_id" value="{% archiveDetail with name="Id" %}">
    <input type="hidden" name="parent_id" value="0" id="comment-parent-id"> {# 用于回复功能,默认为0 #}
    <p id="reply

相关文章

AnQiCMS如何获取并展示某个Tag标签下的所有文档列表?

在安企CMS中管理网站内容,Tag标签无疑是一个非常灵活且实用的工具,它能帮助我们把不同分类甚至不同模型的内容按照主题进行归类,极大地丰富了内容的组织方式和用户的浏览体验。那么,当我们想要在一个专门的页面上,集中展示某个特定Tag标签下的所有文档列表时,安企CMS提供了非常直观和强大的模板标签来帮助我们实现这一目标。 ### 理解Tag标签在安企CMS中的作用 在深入代码之前

2025-11-08

如何在AnQiCMS中显示特定Tag标签的描述和链接?

在安企CMS中,标签(Tag)是一种强大的内容组织工具,它不仅能帮助您对内容进行更细致的分类,还能优化网站的SEO表现,并提升用户的浏览体验。有时,您可能希望在网站前端的某个位置,不仅仅显示标签的名称,还能展示其更详细的描述信息,甚至是直接跳转到该标签相关内容的链接。 这并非难事,安企CMS提供了灵活的模板标签,让您能够轻松实现这些需求。我们将从后台设置开始,逐步深入到前端模板的实际应用

2025-11-08

AnQiCMS模板如何列出网站中所有的Tag标签?

在安企CMS中,利用模板功能来展示网站中所有的Tag标签,是一项有助于提升内容可发现性和网站SEO的重要操作。AnQiCMS作为一个高效的内容管理系统,提供了直观且灵活的标签(Tag)管理机制,让用户能够轻松地在网站模板中列出这些内容。 ### 了解 AnQiCMS 的标签功能 在AnQiCMS中,标签(Tag)可以看作是连接不同内容的话题或关键词。它们不像分类那样严格遵循层级结构

2025-11-08

如何使用AnQiCMS的筛选功能展示特定条件下的文档列表?

在AnQiCMS中管理海量内容时,如何让用户快速找到他们所需的信息,是内容运营的关键之一。幸运的是,AnQiCMS提供了强大的筛选功能,让您能够根据特定条件灵活展示文档列表,从而极大地提升网站的用户体验和内容检索效率。 ### 明确您的筛选需求:从后台内容模型开始 要利用AnQiCMS的筛选功能,首先需要明确您希望用户通过哪些条件来查找内容。这通常需要您在后台的内容模型中进行一些预设

2025-11-08

AnQiCMS模板如何生成和显示网站的留言表单?

在网站运营中,一个高效便捷的留言表单是用户与网站互动的重要桥梁。它不仅收集用户反馈,也是潜在客户获取信息的入口。AnQiCMS作为一个企业级内容管理系统,在这方面提供了强大且灵活的功能,让我们可以轻松地在模板中生成和管理留言表单。 ### AnQiCMS留言表单功能概览 AnQiCMS内置了完善的在线留言功能,并且自v2.0.0-alpha3版本起,便支持了自定义留言字段

2025-11-08

如何获取并展示AnQiCMS后台配置的友情链接列表?

在网站运营中,友情链接扮演着不可忽视的角色,它们不仅能为网站带来宝贵的外部流量,更有助于提升搜索引擎优化(SEO)效果,增强网站的权威性和可信度。对于使用AnQiCMS的用户来说,管理和展示友情链接是一个既简单又高效的过程。本文将详细介绍如何在AnQiCMS后台配置友情链接,以及如何在您的网站前端模板中优雅地将它们呈现出来。 ### 在AnQiCMS后台管理友情链接 首先

2025-11-08

AnQiCMS如何格式化时间戳并显示成可读的日期时间?

在网站内容运营中,时间信息扮演着不可或缺的角色。无论是文章的发布时间、产品的上架日期,还是评论的提交时间,清晰、易读的日期时间格式都能极大提升用户体验。安企CMS作为一个高效的内容管理系统,充分考虑了这一点,提供了灵活的方式来格式化和显示这些时间戳数据。 ### 理解安企CMS中的时间戳 在安企CMS的后台,当我们发布文章、产品或进行其他内容管理操作时

2025-11-08

AnQiCMS模板如何实现条件判断来控制内容的显示?

在安企CMS的模板设计中,灵活地控制内容的显示是构建动态、响应式网站的关键。无论是根据页面类型、数据状态还是特定条件来展示不同信息,条件判断都是不可或缺的工具。AnQiCMS的模板引擎提供了直观且强大的条件判断机制,让您能够轻松实现这些复杂的逻辑。 ### 核心语法:条件判断的基础 AnQiCMS模板中的条件判断与许多主流模板引擎类似,采用`{% if ... %}`标签结构

2025-11-08