作为一名资深的网站运营专家,我深知数据展示的灵活性和用户体验的重要性。安企CMS以其强大的定制化能力,为内容运营提供了诸多便利。今天,我们就来深入探讨一个在日常内容呈现中非常实用的技巧:如何在tagDataList中,优雅地格式化关联文档的创建时间。

安企CMS模板中的时间戳:为什么需要格式化?

在安企CMS中,无论是文章、产品还是其他内容模型,其创建时间(CreatedTime)和更新时间(UpdatedTime)等日期字段,在数据库中通常以Unix时间戳(Timestamp)的形式存储。这种格式对于计算机来说高效且易于处理,但对于网站访问者而言,一串如1678886400这样的数字是毫无意义的。

作为网站运营者,我们的目标是提供清晰、易读的信息。将这些原始时间戳转化为“2023年3月15日”、“昨天10:30”或“Mar 15, 2023”等用户友好的日期格式,不仅能提升网站的专业度,更能改善用户的阅读体验。

tagDataList:关联文档的强大利器

在安企CMS的模板设计中,tagDataList标签是一个非常实用的工具,它允许我们根据特定的标签(Tag)来检索和展示关联的文档列表。例如,我们可能需要在一个页面上展示所有带有“SEO优化”标签的文章,或者列出所有与“新品发布”相关的产品。

tagDataList的工作方式非常直观。它会返回一个包含文档对象的数组,我们可以通过for循环来遍历这些文档。每个文档对象(通常命名为item)都包含了文档的各种属性,例如IdTitleLinkDescription,当然也包括我们关注的CreatedTime

基本使用方式如下:

{% tagDataList archives with tagId="1" %}
    {% for item in archives %}
        <p>{{ item.Title }} - 创建时间:{{ item.CreatedTime }}</p>
    {% endfor %}
{% endtagDataList %}

如果不经过任何处理,{{ item.CreatedTime }}这里输出的,就是那个冷冰冰的Unix时间戳。

stampToDate:时间格式化的魔法棒

为了将这些时间戳“变身”为可读的日期格式,安企CMS提供了一个非常便捷的内置标签函数:stampToDate。这个函数专为时间戳格式化而设计,其使用方法也非常简单明了。

stampToDate函数需要两个参数:

  1. 时间戳(Timestamp):这是你需要格式化的原始Unix时间戳。在tagDataList的循环中,它通常就是item.CreatedTime
  2. 格式字符串(Format String):这是一个定义输出日期格式的字符串。这里需要特别注意,安企CMS基于Go语言开发,因此这个格式字符串遵循Go语言的layout标准,即使用一个固定的参考时间来定义格式,而不是像PHP或JavaScript那样使用占位符(如Y-m-d)。

Go语言的参考时间是:2006-01-02 15:04:05。 这意味着,如果你想要显示年份,就写2006;想要显示月份,就写01;想要显示日期,就写02,以此类推。

实战演练:将tagDataList中的创建时间华丽转身

现在,让我们把tagDataListstampToDate结合起来,看看如何在实际模板中应用。

假设我们有一个TagID为1的标签,我们需要列出所有关联文档的标题和它们的创建日期,并以“年-月-日 时:分”的格式显示:

{% tagDataList archives with tagId="1" %}
    {% for item in archives %}
        <div class="document-item">
            <h2><a href="{{ item.Link }}">{{ item.Title }}</a></h2>
            <p>
                发布于:
                {{ stampToDate(item.CreatedTime, "2006-01-02 15:04") }}
                <span>浏览量:{{ item.Views }}</span>
            </p>
            <p>{{ item.Description }}</p>
        </div>
    {% else %}
        <p>当前标签下暂无关联文档。</p>
    {% endfor %}
{% endtagDataList %}

在上面的代码中,item.CreatedTime作为第一个参数传入stampToDate,而"2006-01-02 15:04"则作为格式字符串,告诉系统我们希望输出的日期格式。

输出示例:

发布于:2023-03-15 10:30

自定义格式,随心所欲

Go语言的日期格式化方式虽然初看有些特别,但一旦掌握其原理,便能实现极其灵活的自定义格式。以下是一些常见的格式化示例,可以帮助您举一反三:

  • 只显示年份和月份: {{ stampToDate(item.CreatedTime, "2006年01月") }}
    • 输出:2023年03月
  • 显示英文月份和日期: {{ stampToDate(item.CreatedTime, "Jan 02, 2006") }}
    • 输出:Mar 15, 2023
  • 显示完整星期几: {{ stampToDate(item.CreatedTime, "Monday, 2006年01月02日") }}
    • 输出:Wednesday, 2023年03月15日
  • 显示上午/下午: {{ stampToDate(item.CreatedTime, "2006-01-02 03:04 PM") }}
    • 输出:2023-03-15 10:30 AM (注意PM为大写,03:04为12小时制)
  • 显示短日期: {{ stampToDate(item.CreatedTime, "01/02/06") }}
    • 输出:03/15/23

通过这些示例,您可以根据网站的UI/UX设计和目标受众的阅读习惯,自由组合出最合适的日期格式。

内容运营的启示

精确且用户友好的时间展示,是高质量内容运营不可或缺的一部分。它不仅仅是技术层面的实现,更直接影响着用户对网站信息的信任感和停留时间。无论是新闻动态、博客文章还是产品发布,清晰的发布或更新时间都能帮助用户快速获取关键信息,提升整体浏览体验。安企CMS提供的stampToDate功能,让这一切变得简单而高效。

总结

掌握tagDataListstampToDate的结合使用,是安企CMS内容运营者的基本功之一。通过本文的讲解与示例,相信您已经能够轻松地在AnQiCMS模板中,将原始的时间戳转化为各种优雅、易读的日期格式,从而为您的网站内容增光添彩。


常见问题 (FAQ)

1. stampToDate函数中的格式字符串为什么这么特别,不是常见的Y-m-d

这是因为安企CMS是基于Go语言开发的,其模板引擎在处理日期格式时遵循Go语言的标准。Go语言的日期格式化是基于一个“参考时间”的,即2006-01-02 15:04:05.999999999 -0700 MST。您在格式字符串中写入的每一个数字或字母,都对应着这个参考时间中的特定组成部分(例如,2006代表年份,01代表月份)。只要您按照参考时间去写,系统就会自动识别并输出对应的时间信息,这种方式虽然初次接触可能有些陌生,但它非常精确和灵活。

2. 除了tagDataList,我能否在其他标签中也使用stampToDate来格式化时间?

当然可以。安企CMS中所有返回文档(如archiveListarchiveDetail)、分类(如categoryListcategoryDetail)或单页面(如pageListpageDetail)的标签,如果其内部数据结构包含CreatedTimeUpdatedTime这类时间戳字段,您都可以使用stampToDate函数进行格式化。用法与在tagDataList中完全相同,只需将item.CreatedTime替换为对应标签循环变量的时间戳字段即可。

3. 如果我发现模板中的创建时间直接显示为一长串数字(如1678886400),而不是格式化的日期,我该如何排查问题?

这通常意味着stampToDate函数没有