在网站运营中,内容发布日期不仅仅是一个时间标记,它更是访客获取信息时效性的重要依据。一个清晰、易读的日期格式,能显著提升用户体验,让您的网站内容显得更加专业和贴心。
然而,在安企CMS(AnQiCMS)这样功能强大的内容管理系统中,发布日期在数据库中通常以“时间戳”(timestamp)的形式存储,这通常是一串难以直接理解的数字。例如,您可能会看到 1609470335 这样的数字,而不是我们习惯的 2021年1月1日。这时,我们就需要对这些时间戳进行格式化,将它们转化为对人类友好的日期时间格式。
幸运的是,安企CMS为此提供了一个极其便捷且灵活的内置模板标签,让这个过程变得轻而易举。
告别数字海洋:认识 stampToDate 标签
安企CMS的模板系统采用了类似Django模板引擎的语法,其中一个核心亮点就是 stampToDate 标签。这个标签专为将时间戳转换为我们熟悉的日期时间格式而设计。
它的基本使用方式非常直观:
{{ stampToDate(时间戳, "格式") }}
这里有两个关键部分:
时间戳: 这是您从内容数据中获取的原始时间戳,通常是一个10位或13位的数字。在安企CMS的模板中,文章或产品的发布时间通常通过
item.CreatedTime获取,更新时间则是item.UpdatedTime。这些字段会直接提供时间戳数值。格式: 这是一串字符串,用于告诉系统您希望日期时间以何种具体形式展示。安企CMS底层基于Go语言开发,因此这里的格式字符串遵循Go语言独特的日期时间格式化约定。
理解Go语言的日期格式化“魔术数字”
Go语言在日期时间格式化上有一个非常巧妙的约定:它不使用类似 Y-m-d 这样的占位符,而是通过一个固定的参考日期时间——“2006-01-02 15:04:05”——来构建格式。您只需要用这个参考日期中的年、月、日、时、分、秒等元素,替换成您想要的显示方式,系统就能自动识别并应用。
让我们通过一些例子来理解这个“魔术数字”的用法:
显示年份、月份和日期(例如:2023-10-26) 如果您希望显示
年-月-日的格式,可以这样写:"2006-01-02"。{{ stampToDate(item.CreatedTime, "2006-01-02") }}可能会输出2023-10-26
中文友好格式(例如:2023年10月26日) 如果您想要更符合中文阅读习惯的格式,只需将参考日期中的连字符替换成中文即可:
"2006年01月02日"。{{ stampToDate(item.CreatedTime, "2006年01月02日") }}可能会输出2023年10月26日
包含时间(例如:2023-10-26 14:30) 想要精确到小时和分钟?在格式字符串中加入时间部分的“魔术数字”:
"2006-01-02 15:04"。{{ stampToDate(item.CreatedTime, "2006-01-02 15:04") }}可能会输出2023-10-26 14:30
只显示时间(例如:14:30:55) 如果您只需要显示时间,格式可以简化为:
"15:04:05"。{{ stampToDate(item.CreatedTime, "15:04:05") }}可能会输出14:30:55
自定义分隔符(例如:2023/10/26) 您可以根据需求自由更改日期元素之间的分隔符:
"2006/01/02"。{{ stampToDate(item.CreatedTime, "2006/01/02") }}可能会输出2023/10/26
这个“魔术数字”的奥秘在于,2006 代表年份,01 代表月份,02 代表日期,15 代表24小时制的小时,04 代表分钟,05 代表秒。您只需记住这个日期时间,并根据它来“构建”您想要的任何输出格式。
动手实践:在您的安企CMS模板中应用
现在,我们来看如何在实际的安企CMS模板中运用 stampToDate 标签。
假设您正在编辑一个文章详情页的模板(例如 article/detail.html 或 archive/detail.html),并希望显示文章的发布日期和更新日期:
{# 假设当前页面的文章数据可以通过 archive 变量直接访问 #}
<article>
<h1>{{ archive.Title }}</h1>
<div class="post-meta">
<span>发布于:{{ stampToDate(archive.CreatedTime, "2006年01月02日 15:04") }}</span>
{# 您可能希望更新时间只显示日期,或者只在有更新时才显示 #}
{% if archive.UpdatedTime and archive.UpdatedTime != archive.CreatedTime %}
<span>最近更新:{{ stampToDate(archive.UpdatedTime, "2006-01-02") }}</span>
{% endif %}
</div>
<div class="post-content">
{{ archive.Content|safe }}
</div>
</article>
如果您是在文章列表页(例如 article/list.html 或 archive/list.html),需要遍历多篇文章并显示它们的发布日期,情况也同样简单:
”`twig {% archiveList archives with type=“page” limit=“10” %}
{% for item in archives %}
<div class="archive-item">
<h2><a href="{{ item.Link }}">{{ item.Title }}</a></h2>
<p class="summary">{{ item.Description }}</p>
<div class="info">
<span>分类:{% categoryDetail with name="Title" id=item.CategoryId %}