在网站运营中,评论模块不仅是用户交流的重要阵地,也是内容生态活力的体现。一条清晰、易读的评论发布时间,能够极大地提升用户体验,让访客一眼就能掌握信息的新鲜度。然而,许多内容管理系统(CMS)在模板中默认输出的评论时间往往是未经格式化的时间戳,这对于普通用户来说,阅读起来既生硬又不直观。
安企CMS(AnQiCMS)作为一个高效且高度可定制的内容管理系统,充分考虑到了这一点。即使 commentList 标签在获取评论数据时,其 CreatedTime 字段返回的是原始时间戳,AnQiCMS 也提供了极其灵活且易用的方式来将其格式化为我们所熟悉和喜爱的各种日期时间格式。这得益于其强大的模板引擎和内置的 stampToDate 标签。
认识 commentList 中的 CreatedTime
当我们通过 commentList 标签在模板中循环展示评论时,每条评论数据都包含一个 CreatedTime 字段,例如:
{% commentList comments with archiveId=archive.Id type="list" limit="6" %}
{% for item in comments %}
<div>
{# 如果直接输出,可能会看到这样的原始时间戳:1678886400 #}
<span>发布时间:{{item.CreatedTime}}</span>
{# ... 其他评论内容 ... #}
</div>
{% endfor %}
{% endcommentList %}
这样的原始时间戳虽然精确,但对于用户而言毫无可读性。要将它转换为“2023年3月15日 10:30”或“昨天 10:30”这样的格式,就需要用到 AnQiCMS 模板引擎中的“时间魔法”——stampToDate 标签。
stampToDate 标签的魅力
stampToDate 是 AnQiCMS 专门用来处理时间戳格式化的强大工具。它的使用方式非常直观,只需要传入两个参数:要格式化的时间戳,以及您希望呈现的日期时间格式字符串。
其基本语法是:{{stampToDate(时间戳, "格式")}}。
这里需要特别强调的是,安企CMS基于Go语言开发,因此其时间格式化遵循Go语言的独特规范。不同于许多其他语言使用“Y-m-d H:i:s”这样的占位符,Go语言采用一个固定的参考时间“2006-01-02 15:04:05.999999999 -0700 MST”来作为格式化模板。您可以通过这个参考时间中的每个组成部分来构建您想要的任何格式。简单来说:
2006代表年份01代表月份02代表日期15代表24小时制小时 (也可以是03代表12小时制小时)04代表分钟05代表秒.999999999代表纳秒-0700代表时区偏移MST代表时区名称
掌握了这个规则,您就可以随心所欲地定义时间显示格式了。
实战演练:自定义评论时间格式
接下来,我们通过几个常见的示例,看看如何在 commentList 中对 CreatedTime 进行自定义格式化。
示例一:仅显示年月日
如果我们只需要显示评论的发布日期,格式为“年-月-日”,可以这样做:
{% commentList comments with archiveId=archive.Id type="list" limit="6" %}
{% for item in comments %}
<div>
<span>发布时间:{{stampToDate(item.CreatedTime, "2006-01-02")}}</span> {# 输出:2023-03-15 #}
{# ... 其他评论内容 ... #}
</div>
{% endfor %}
{% endcommentList %}
示例二:显示完整的日期和时间
如果需要显示精确到秒的完整日期时间,格式为“年-月-日 时:分:秒”,可以这样定义:
{% commentList comments with archiveId=archive.Id type="list" limit="6" %}
{% for item in comments %}
<div>
<span>发布时间:{{stampToDate(item.CreatedTime, "2006-01-02 15:04:05")}}</span> {# 输出:2023-03-15 10:30:00 #}
{# ... 其他评论内容 ... #}
</div>
{% endfor %}
{% endcommentList %}
示例三:显示中文日期格式
为了贴合中文阅读习惯,我们可以将日期格式化为“年 月 日”:
{% commentList comments with archiveId=archive.Id type="list" limit="6" %}
{% for item in comments %}
<div>
<span>发布时间:{{stampToDate(item.CreatedTime, "2006年01月02日 15:04")}}</span> {# 输出:2023年03月15日 10:30 #}
{# ... 其他评论内容 ... #}
</div>
{% endfor %}
{% endcommentList %}
示例四:仅显示时间(小时:分钟)
有时,我们可能只需要关注评论是几点几分发布的:
{% commentList comments with archiveId=archive.Id type="list" limit="6" %}
{% for item in comments %}
<div>
<span>发布时间:{{stampToDate(item.CreatedTime, "15:04")}}</span> {# 输出:10:30 #}
{# ... 其他评论内容 ... #}
</div>
{% endfor %}
{% endcommentList %}
通过这些示例,您可以看到 stampToDate 标签的强大之处,它能够满足绝大多数日期时间显示的需求,极大地提升了评论模块的易用性和美观度。在实际运用中,您可以根据网站的整体设计风格和用户偏好,选择最合适的日期时间格式。
总结
自定义评论发布时间格式是提升网站用户体验的一个小而美的细节。安企CMS凭借其灵活的模板引擎和简单直观的 stampToDate 标签,让这一需求变得轻而易举。作为网站运营者,我们应当善用这些功能,将枯燥的技术数据转化为用户友好、赏心悦目的内容呈现,为访客创造一个更加流畅和愉悦的浏览环境。
常见问题 (FAQ)
Q1: 为什么 AnQiCMS 的时间格式化字符串看起来这么特别,用的是“2006-01-02 15:04:05”而不是“YYYY-MM-DD”?
A1: 这是因为 AnQiCMS 是用 Go 语言开发的。Go 语言在设计之初,就摒弃了传统的“Y-m-d”式占位符,而是采用了一个固定的参考时间点——“2006年1月2日 下午3点4分5秒 MST时区(-0700)”,也就是 2006-01-02 15:04:05 -0700 MST。当你需要格式化时间时,你只需将这个参考时间中对应年份、月份、日期、小时、分钟、秒等数字替换成你想要的格式字符(比如将 01 替换为 月),Go 语言就会根据你的模板字符串来解析并输出相应格式的时间。虽然初看起来有些特别,但一旦理解了其原理,你会发现它非常直观且强大。
Q2: 除了 commentList 中的 CreatedTime,我在 archiveList 或 archiveDetail 中获取到的 CreatedTime 或 UpdatedTime 也能用 stampToDate 进行格式化吗?
A2: 当然可以。stampToDate 标签是 AnQiCMS 模板引擎提供的通用时间格式化工具,它不局限于特定标签。无论是 archiveList 中的文章发布时间 (item.CreatedTime),archiveDetail 中的文章更新时间 (archive.UpdatedTime),还是其他任何以 Unix 时间