了解一篇文章的发布和更新时间,对于读者来说,不仅能判断内容的时效性,避免阅读过时信息,对于搜索引擎优化(SEO)而言,也是一个重要的考量因素。AnQiCMS作为一个高效的内容管理系统,提供了灵活的模板功能,让您可以轻松地在网站上展示这些关键时间信息。

AnQiCMS的模板系统采用了类似Django的语法,它通过双花括号 {{变量}} 来输出变量的值,而逻辑控制(如条件判断、循环等)则使用 {% 标签 %} 结构。在AnQiCMS中,文章的发布时间(CreatedTime)和更新时间(UpdatedTime)都是以时间戳的形式存储的。为了将这些时间戳转化为我们熟悉的日期和时间格式,AnQiCMS提供了一个非常实用的内置标签:stampToDate

在文章详情页显示发布时间和更新时间

当您在浏览单个文章的详情页时,通常会使用archiveDetail标签来获取当前文章的详细信息。这个标签非常强大,可以直接访问文章的各项属性。

要显示文章的发布时间,您可以使用以下方式:

发布时间:{{ stampToDate(archive.CreatedTime, "2006-01-02 15:04") }}

这里的archive.CreatedTime是当前文章的发布时间戳。stampToDate标签的第二个参数 "2006-01-02 15:04" 是一个格式化字符串,它告诉系统您希望时间以”年-月-日 时:分”的格式显示。

同样,要显示文章的更新时间,您可以这样操作:

更新时间:{{ stampToDate(archive.UpdatedTime, "2006-01-02 15:04:05") }}

archive.UpdatedTime代表文章的更新时间戳。您可以看到,通过调整格式化字符串,您可以灵活地控制时间显示到秒。

在文章列表页显示发布时间和更新时间

在文章列表页,您会使用archiveList标签结合for循环来展示多篇文章。在这种情况下,CreatedTimeUpdatedTime会作为循环体内每个文章对象(通常命名为item)的属性。

例如,如果您有一个文章列表archives,您可以这样遍历并显示每篇文章的时间:

{% 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日") }}
            {% if item.UpdatedTime > item.CreatedTime %}
            (最后更新:{{ stampToDate(item.UpdatedTime, "2006-01-02") }})
            {% endif %}
        </p>
        <p>{{ item.Description }}</p>
    </article>
    {% endfor %}
{% endarchiveList %}

在这个例子中,我们还加入了一个简单的判断,只有当UpdatedTime晚于CreatedTime时,才显示更新时间,这样可以避免在文章从未更新过的情况下重复显示相同的时间。

时间格式化选项详解

stampToDate标签的核心在于其格式化参数。这个参数遵循Go语言特有的时间格式化规则,它不是传统的Y-m-d%Y-%m-%d,而是使用一个特定日期作为参照模板:”2006年01月02日 15时04分05秒”。您只需要记住这个参照模板,然后将您想要显示的日期/时间部分替换为参照模板中对应的数字即可。

以下是一些常用的格式化示例:

  • 仅日期 (年-月-日): "2006-01-02"
  • 日期 (年/月/日): "2006/01/02"
  • 完整日期时间 (到秒): "2006-01-02 15:04:05"
  • 日期时间 (到分): "2006-01-02 15:04"
  • 仅时间 (时:分): "15:04"
  • 带中文的日期: "2006年01月02日"
  • 带中文的日期时间: "2006年01月02日 15时04分"

综合示例

下面是一个将发布时间、更新时间整合到文章显示中的模板片段示例,让您对如何在实际页面中运用有更直观的理解:

<div class="article-meta">
    <h1>{{ archive.Title }}</h1>
    <p class="time-info">
        <span>发布时间:{{ stampToDate(archive.CreatedTime, "2006年01月02日 15:04") }}</span>
        {% if archive.UpdatedTime > archive.CreatedTime %}
        <span>最后更新:{{ stampToDate(archive.UpdatedTime, "2006年01月02日 15:04") }}</span>
        {% endif %}
    </p>
    <div class="article-content">
        {{ archive.Content|safe }}
    </div>
</div>

通过以上方法,您可以在AnQiCMS的模板中轻松且灵活地展示文章的发布和更新时间,不仅提升了用户体验,也为网站的SEO表现打下了良好基础。


常见问题(FAQ)

Q1:为什么我显示的时间是一串长数字,而不是日期格式? A1:这通常是因为您忘记了在stampToDate标签中提供第二个参数,即时间格式化字符串。CreatedTimeUpdatedTime本身是时间戳,需要通过stampToDate将其转换为可读的日期时间格式。请确保您的代码类似 {{ stampToDate(item.CreatedTime, "2006-01-02") }},其中 "2006-01-02" 是您期望的格式。

Q2:我想让发布时间只显示日期,更新时间显示具体到秒,可以实现吗? A2:当然可以。stampToDate标签的灵活性正是体现在其格式化参数上。您可以为发布时间使用"2006-01-02"这样的格式,而为更新时间使用"2006-01-02 15:04:05"这样的格式,系统会根据您的设定分别进行转换。

Q3:如果文章从未被更新过,更新时间会显示什么? A3:在AnQiCMS中,如果一篇文章从未被手动更新过,其UpdatedTime字段通常会与CreatedTime相同。因此,如果您直接显示UpdatedTime,它会与发布时间一致。为了更好的用户体验,您可以像文章列表页示例中那样,添加一个条件判断({% if item.UpdatedTime > item.CreatedTime %}),只有当更新时间确实晚于发布时间时,才显示“最后更新”字样。