在网站运营中,我们经常需要显示一些动态的时间信息,例如网站底部的版权年份(如“© 2023-当前年份”),文章的发布或更新时间,或者特定活动的截止日期等。这些动态日期不仅能保持网站信息的时效性,还能提高用户体验,在某些情况下也对SEO有积极作用。

安企CMS提供了一系列灵活的模板标签,让您能够轻松地在网站的任何位置动态显示当前年份或指定日期。下面我们将详细探讨如何利用这些功能。

一、动态显示网站当前年份

网站页脚的版权信息通常需要每年自动更新,如果手动修改,既麻烦又容易遗漏。安企CMS为此提供了一个非常便捷的标签:{% now "2006" %}

这个标签能够直接获取并显示网站运行时的当前年份。其中的 "2006" 并不是一个具体的年份,而是Go语言中日期格式化的一种特殊用法,它代表了参考时间 2006年01月02日15时04分05秒 中的“年”的部分。您只需将它放置在模板中需要显示年份的位置即可。

示例:在页脚显示当前年份

假设您想在网站页脚显示类似“© 2023 [您的公司名称] 版权所有”的版权信息,并且年份自动更新,您可以在模板文件(通常是footer.html或包含页脚代码的公共模板)中这样使用:

<p>© {% now "2006" %} {{ system.SiteName }} 版权所有。</p>

当2024年到来时,这个标签会自动更新显示为“© 2024 [您的公司名称] 版权所有”,省去了您手动修改的麻烦。

二、格式化显示指定日期或时间戳

除了当前年份,我们还需要在网站上展示文章的发布时间、更新时间,甚至是特定活动的日期等。安企CMS提供了{{ stampToDate(时间戳, "格式") }}这个强大的标签来满足这些需求。

这里的时间戳通常是指Unix时间戳(一个表示从1970年1月1日0时0分0秒到特定时间的秒数)。安企CMS中的文章发布时间(CreatedTime)、更新时间(UpdatedTime)等都是以时间戳的形式存储的。格式部分则决定了日期显示的方式。

同样,格式参数也遵循Go语言的日期格式化规则,以 2006-01-02 15:04:05 这个参考时间作为模板进行匹配。这意味着,如果您想显示:

  • 年份,就用 2006
  • 月份,就用 01
  • 日期,就用 02
  • 小时(24小时制),就用 15
  • 分钟,就用 04
  • 秒钟,就用 05

您可以根据需要组合这些元素,并添加分隔符(如年、月、日、斜杠、冒号等)。

示例:显示文章发布和更新时间

在文章详情页(例如archive/detail.html或模型对应的详情模板中),您可以使用archiveDetail标签获取文章详情,然后结合stampToDate来格式化显示CreatedTimeUpdatedTime

{% archiveDetail archive with name="Title" %}
    <h1>{{ archive.Title }}</h1>
    <p>
        发布时间:{{ stampToDate(archive.CreatedTime, "2006年01月02日 15:04") }}
        {% if archive.UpdatedTime != archive.CreatedTime %} {# 如果更新时间与创建时间不同才显示 #}
        <span>(更新于:{{ stampToDate(archive.UpdatedTime, "2006-01-02") }})</span>
        {% endif %}
    </p>
    <div>
        {{ archive.Content|safe }}
    </div>

在这个例子中:

  • "2006年01月02日 15:04" 会将时间戳格式化为“2023年10月26日 10:30”这样的形式。
  • "2006-01-02" 会将时间戳格式化为“2023-10-26”这样的纯日期形式。

示例:在文章列表中显示日期

如果您想在文章列表页(例如archive/list.html或模型对应的列表模板中)显示每篇文章的发布日期,通常会用到archiveList标签进行循环:

{% archiveList archives with type="page" limit="10" %}
    {% for item in archives %}
    <article>
        <h2><a href="{{ item.Link }}">{{ item.Title }}</a></h2>
        <p>发布日期:{{ stampToDate(item.CreatedTime, "2006-01-02") }}</p>
        <p>{{ item.Description }}</p>
        <a href="{{ item.Link }}">阅读更多</a>
    </article>
    {% endfor %}
{% endarchiveList %}

这里,item.CreatedTime是循环中每篇文章的发布时间戳,通过stampToDate标签,我们将其格式化为年-月-日的形式。

三、一些应用场景与小技巧

  • 多语言日期显示: 如果您的网站支持多语言,可以考虑在不同的语言模板中,根据目标语言的习惯调整stampToDate标签的格式参数,以适应不同国家和地区的用户阅读习惯。
  • 结合自定义字段: 如果您为文章或产品模型添加了自定义日期字段(例如“活动开始日期”或“产品有效期”),只要这些字段存储的是时间戳,同样可以使用stampToDate标签进行格式化显示。例如,如果您有一个自定义字段名为event_start_time,您可以在模板中这样调用:{{ stampToDate(archive.event_start_time, "2006年1月2日") }}
  • 动态年份范围: 如果您希望显示像“2020-当前年份”这样的年份范围,您可以结合使用CreatedTime的年份和{% now "2006" %}
    
    <p>© {{ stampToDate(archive.CreatedTime, "2006") }}-{% now "2006" %} 版权所有。</p>
    

安企CMS的模板标签提供了极大的灵活性,让网站的时间信息管理变得高效而简单。掌握这些标签的用法,您将能够更好地控制网站内容的呈现,为访客提供更准确、更具时效性的信息。


常见问题 (FAQ)

1. 为什么我的日期格式化出来和预期不一样,而是显示像“2006-01-02”这样的数字组合?

这是因为Go语言(安企CMS的开发语言)在进行日期格式化时,使用的是一个固定的“参考时间”作为模板,而不是像其他一些语言那样使用Y-m-d%Y-%m-%d等符号。这个参考时间就是 2006年01月02日15时04分05秒。您必须使用这个参考时间中对应的数字来表示您想要的年、月、日、时、分、秒。例如,如果您想显示年份,您应该使用"2006";如果您想显示月份,就使用"01"。只要按照参考时间中的数字来构建您的格式字符串,就能得到预期的结果。

2. 如何显示类似“2020-当前年份”这样的年份范围?

您可以使用stampToDate标签获取起始年份,并结合{% now "2006" %}标签获取当前年份。例如,如果您的内容发布时间是2020年,并且您希望显示“2020-当前年份”:

<p>版权信息:© {{ stampToDate(archive.CreatedTime, "2006") }}-{% now "2006" %}</p>

这将首先提取 archive.CreatedTime 的年份(例如 2020),然后连接一个短横线,最后显示当前的年份(例如 2024)。

3. 除了页脚,我还能在网站的其他位置动态显示日期吗?

当然可以。安企CMS的模板标签可以在网站模板的任何位置使用。除了页脚的版权信息和文章的发布更新时间,您还可以将这些标签应用于:

  • 网站头部: 例如显示网站的最新动态发布日期。
  • 侧边栏: 展示最新评论的时间,或即将到来的活动日期。
  • 自定义内容块: 在首页或其他页面添加一个独立的日期信息模块。 *