安企CMS(AnQiCMS)凭借其灵活强大的模板引擎,让网站内容的呈现方式拥有了极高的自由度。在网站运营中,评论区是用户互动的重要场所,清晰地展示评论者的信息能够有效提升评论内容的阅读体验和互动氛围。本文将向您详细介绍,如何利用 add 过滤器,为 commentList 中的评论动态添加用户昵称和时间戳。
灵活展现评论数据:从 commentList 开始
在 AnQiCMS 中,展示评论内容通常会使用 commentList 模板标签。这个标签能帮助我们轻松地获取与特定文章或产品关联的评论列表。一个基本的评论列表循环可能看起来像这样:
{% commentList comments with archiveId=archive.Id type="list" limit="6" %}
{% for item in comments %}
<div class="comment-item">
<p>评论人:{{ item.UserName }}</p>
<p>评论内容:{{ item.Content }}</p>
<p>评论时间(原始):{{ item.CreatedTime }}</p>
</div>
{% endfor %}
{% endcommentList %}
在这里,item.UserName 直接提供了评论者的昵称,而 item.CreatedTime 则是一个时间戳,通常是一串数字,例如 1609470335。为了更好地呈现给用户,我们通常需要将这个时间戳转换成易读的日期时间格式。
认识 add 过滤器:拼接与加和的利器
add 过滤器是 AnQiCMS 模板引擎中一个非常实用的工具,它主要用于以下两种场景:
- 数字相加: 如果操作的对象是数字,
add过滤器会执行加法运算。{{ 5|add:2 }} {# 结果:7 #} - 字符串拼接: 如果操作的对象是字符串,或者其中一个为字符串,
add过滤器会将它们连接起来。
值得注意的是,在进行字符串拼接时,您可以连续使用多个{{ "安企"|add:"CMS" }} {# 结果:安企CMS #} {{ "欢迎"|add:"使用"|add:"AnQiCMS" }} {# 结果:欢迎使用AnQiCMS #}add过滤器,使代码更加流畅。
格式化时间戳:stampToDate 的妙用
正如前面提到的,item.CreatedTime 返回的是一个时间戳。直接显示这串数字并不直观。虽然 add 过滤器可以用于字符串拼接,但它并不能直接将时间戳格式化为我们常见的日期时间格式(例如“2023年10月26日 10:30”)。
AnQiCMS 为此提供了专门的 stampToDate 标签,它的作用就是将时间戳格式化成您需要的日期时间字符串。其使用方式非常简洁:
{{ stampToDate(item.CreatedTime, "2006年01月02日 15:04") }}
这里的 "2006年01月02日 15:04" 是 Golang 语言中日期时间格式化的标准占位符,分别对应年、月、日、小时和分钟。您可以根据需要调整这个格式字符串来显示不同的日期时间样式。
组合使用:动态添加昵称与格式化时间
现在我们已经掌握了如何获取用户昵称、如何格式化时间戳,以及 add 过滤器的拼接功能。接下来,我们将它们巧妙地结合起来,在评论内容旁边动态地展示评论者和评论时间。
首先,我们可以像之前那样获取到 item.UserName。
接着,利用 stampToDate 标签将 item.CreatedTime 格式化为一个可读的日期时间字符串,并将其赋值给一个临时变量,例如 formattedTime。
最后,我们使用 add 过滤器将用户昵称、一些分隔文字和格式化后的时间字符串拼接成一个完整的显示文本。
让我们来看一下如何在 commentList 的循环中实现这个效果:
{% commentList comments with archiveId=archive.Id type="list" limit="6" %}
{% for item in comments %}
<div class="comment-item">
<p>
{# 使用 stampToDate 格式化时间戳,并赋值给 formattedTime 变量 #}
{% set formattedTime = stampToDate(item.CreatedTime, "2006年01月02日 15:04") %}
{# 使用 add 过滤器将用户昵称、固定文本和格式化后的时间拼接起来 #}
<strong>
{{ item.UserName|add:" " |add:"(发布于 "|add:formattedTime|add:")" }}
</strong>
</p>
<p>{{ item.Content }}</p>
</div>
{% endfor %}
{% endcommentList %}
通过这段代码,每一条评论的上方,都会动态地显示类似 “张三 (发布于 2023年10月26日 10:30)” 这样的信息,紧接着才是评论的实际内容。这样不仅提升了信息的可读性,也让评论区显得更加专业和人性化。
总结
AnQiCMS 的模板引擎提供了丰富的标签和过滤器,通过灵活组合使用,可以实现各种复杂的页面展示需求。掌握 add 过滤器与 stampToDate 标签的用法,您便能轻松地为网站评论区增添更多动态和用户友好的信息,从而显著提升网站的用户体验。
常见问题 (FAQ)
1. add 过滤器能否直接格式化时间戳?
不能。add 过滤器主要用于数字的加法运算和字符串的拼接。要将时间戳格式化为易读的日期时间字符串,您需要使用 AnQiCMS 提供的 stampToDate 标签。
**2. 如果 item.UserName 昵