在网站运营中,用户留言和文章评论是促进互动、提升内容价值的重要组成部分。对于安企CMS的用户来说,合理地展示这些用户生成内容,并有效地管理它们的审核状态,是确保网站内容质量和用户体验的关键。下面我们将详细探讨在安企CMS中如何实现这一目标。
了解安企CMS中的评论与留言管理
安企CMS为用户提供了方便的内容评论和网站留言管理功能。在后台管理界面,您可以通过“功能管理”菜单找到“内容评论”和“网站留言”这两个模块。这里是集中管理所有用户提交评论和留言的地方。
作为网站管理员,您可以:
- 查看所有用户提交的评论和留言。
- 对评论和留言进行审核,决定它们是否在前台显示。
- 删除不当内容,维护网站的健康环境。
- 导出留言数据,方便后续处理和分析。
安企CMS的设计考虑到了网站内容的安全和合规性,因此,管理后台是您掌控用户互动内容的第一道防线。
在前端页面展示评论或留言列表
要在网站前台显示用户评论或留言,我们需要在模板文件中使用安企CMS提供的特定标签。对于文章评论,核心是 commentList 标签;对于网站留言,虽然文档中主要介绍了留言表单的构建,但通常列表的展示逻辑与评论列表类似,都是通过循环数据来实现。
显示文章评论列表
假设我们要在文章详情页显示评论列表。首先,您需要在模板文件中,例如 comment/list.html(这是安企CMS约定的评论列表页模板),或者直接在文章详情页模板中,引入 commentList 标签。
commentList 标签是获取评论数据的关键。它允许您根据需要过滤和排序评论,其基本用法如下:
{% commentList comments with archiveId=archive.Id type="page" limit="10" %}
{# 评论循环体 #}
{% endcommentList %}
这里 archiveId=archive.Id 表示获取当前文章(由 archive.Id 标识)的评论。type="page" 意味着您希望进行分页显示,limit="10" 则设定了每页显示10条评论。
在 commentList 标签的循环体内部,您可以通过 item 变量访问每条评论的详细信息。一些常用的字段包括:
item.Id: 评论的唯一标识。item.UserName: 评论用户的昵称。item.Content: 评论的具体内容。item.CreatedTime: 评论发布的时间,需要使用stampToDate标签进行格式化显示,例如{{stampToDate(item.CreatedTime, "2006-01-02 15:04")}}。item.Status: 评论的审核状态,这是处理审核状态的核心字段。item.Parent: 如果这是一条回复评论,Parent字段将包含被回复评论的完整数据,您可以用它来构建评论的嵌套回复结构。
处理审核状态
item.Status 字段的值决定了评论的显示方式:
- 当
Status = 1时,表示评论已通过审核,可以正常显示。 - 当
Status = 0时,表示评论正在审核中。在这种情况下,您可以选择不显示这条评论,或者显示一个“评论正在审核中”的提示信息,以告知用户。
结合以上字段和审核状态,我们可以构建一个评论列表的显示逻辑:
<div class="comment-section">
{% commentList comments with archiveId=archive.Id type="page" limit="10" %}
{% for item in comments %}
<div>
<div>
{# 显示评论用户名,如果未审核则显示“审核中”提示 #}
<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>
{# 显示被回复评论的内容 #}
{% if item.Parent %}
<blockquote>
{% if item.Parent.Status != 1 %}
该内容正在审核中:{{item.Parent.Content|truncatechars:9}}
{% else %}
{{item.Parent.Content|truncatechars:100}}
{% endif %}
</blockquote>
{% endif %}
{# 显示当前评论的内容,如果未审核则显示提示 #}
{% if item.Status != 1 %}
该评论正在审核中,请耐心等待。
{% else %}
{{item.Content}}
{% endif %}
</div>
{# 评论点赞和回复按钮 (如果需要) #}
<div class="comment-actions" data-id="{{item.Id}}" data-user="{{item.UserName}}">
<a href="javascript:;" class="praise-btn">赞(<span class="vote-count">{{item.VoteCount}}</span>)</a>
<a href="javascript:;" class="reply-btn">回复</a>
</div>
</div>
{% endfor %}
{% else %}
<p>暂无评论,快来发表您的看法吧!</p>
{% endcommentList %}
</div>
分页显示评论
当 commentList 标签的 type 参数设置为 "page" 时,它会与 pagination 标签协同工作,提供分页功能。在评论列表下方,您可以添加分页导航:
<div class="pagination-section">
{% pagination pages with show="5" %}
<a href="{{pages.FirstPage.Link}}">首页</a>
{% if pages.PrevPage %}<a href="{{pages.PrevPage.Link}}">上一页</a>{% endif %}
{% for pageItem in pages.Pages %}
<a class="{% if pageItem.IsCurrent %}active{% endif %}" href="{{pageItem.Link}}">{{pageItem.Name}}</a>
{% endfor %}
{% if pages.NextPage %}<a href="{{pages.NextPage.Link}}">下一页</a>{% endif %}
<a href="{{pages.LastPage.Link}}">尾页</a>
{% endpagination %}
</div>
显示网站留言列表
对于网站留言,如果后台配置了显示列表,其模板标签和展示逻辑与评论列表类似,您可能需要定义一个类似的标签,或者通过自定义查询来实现。但在多数情况下,网站留言更多是用于收集信息,后端管理查看为主,前端不直接展示完整列表。如果您需要展示,可能需要通过archiveList或自定义标签来获取特定的留言内容并手动构建显示逻辑。
用户提交评论或留言
用户在前台提交评论或留言时,通常会通过HTML表单完成。安企CMS提供了相应的后端接口来接收这些数据。
- 评论提交: 提交至
/comment/publish接口。表单中需要包含archive_id(文章ID)、user_name(用户昵称)、content(评论内容)等字段。如果回复特定评论,还需要parent_id。 - 留言提交: 提交至
/guestbook.html接口。表单字段会根据您在后台“网站留言”中自定义的字段来决定,通常包括user_name、contact(联系方式)、content(留言内容)等。 - 评论点赞: 如果您希望用户可以点赞评论,可以通过 POST 请求向
/comment/praise接口提交评论的id。
提交后,评论或留言会进入后台等待处理,其审核状态(Status)默认为0(审核中),待管理员在后台审核通过后,其 Status 才会变为1,并最终显示在前台。
常见问题 (FAQ)
如何设置评论和留言是否需要审核? 安企CMS允许您灵活配置评论和留言的审核策略。通常,您可以在后台的“功能管理”或“内容设置”模块中找到相关选项,例如“评论默认状态”或“留言是否需要审核”等设置。您可以选择评论/留言发布后直接显示,还是需要人工审核后才能显示。
为什么我提交的评论没有立即显示在网站上? 这很可能是因为网站开启了评论/留言审核机制。您的评论提交后,会先进入后台管理系统,等待网站管理员进行审核。只有管理员审核通过后,评论的
Status字段才会变为1,从而在前台页面显示出来。您可以联系网站管理员了解具体的审核流程。如何在评论列表中显示多级回复(即用户回复了其他用户的评论)? 在
commentList标签的循环中,每条评论数据item都包含一个item.Parent字段。如果item.Parent不为空,则表示当前评论是针对item.Parent这条评论的回复。您可以通过检查item.Parent的存在性,并显示item.Parent.UserName和item.Parent.Content来构建多级回复的显示结构,就像上面的代码示例中展示的那样。如果需要更复杂的树状回复结构,您可能需要在前端使用JavaScript对评论数据进行进一步处理。