在构建和维护网站时,我们经常需要在页面上显示一些动态信息,例如当前年份。这对于版权声明、年度报告或任何需要实时年份信息的场景都非常实用。AnQiCMS 凭借其简洁高效的模板系统,让获取并显示当前年份变得轻而易举。

AnQiCMS 的模板系统借鉴了 Django 模板引擎的语法,这意味着它提供了直观的标签和变量来操作内容。接下来,我们将探讨如何在你的 AnQiCMS 模板中轻松实现这一功能。

获取当前年份的核心方法:{% now %} 标签

AnQiCMS 内置了一个功能强大的 now 标签,专门用于在模板中获取并显示当前时间。要获取当前年份,我们只需要配合 Go 语言的时间格式化规则来使用它。

它的基本用法是:{% now "格式字符串" %}

这个“格式字符串”是关键。对于年份,我们通常会使用 "2006" 作为格式字符串。你可能会觉得奇怪,为什么是 “2006” 而不是当前年份,比如 “2023” 或 “2024”?这正是 Go 语言时间格式化的独特之处。在 Go 语言中,时间格式不是用 YYYYMM 这样的占位符,而是使用一个固定的参考时间 2006-01-02 15:04:05.999999999 -0700 MST 来定义输出格式。你需要将你想要的时间部分的参考值写入格式字符串中,Go 就会根据你的输入来推断你想要的输出格式。

所以,当你使用 {% now "2006" %} 时,它会根据参考时间中的年份部分 “2006” 来输出当前日期的年份。

实际操作:将当前年份添加到你的模板

最常见的应用场景之一是在网站页脚的版权声明中显示当前年份。

例如,如果你想在页脚显示 “© 2024 你的网站名称 版权所有.“,你可以在你的模板文件(比如 footer.htmlbash.html)中添加如下代码:

<footer>
    <p>&copy; {% now "2006" %} {% system with name="SiteName" %} 版权所有.</p>
</footer>

在这段代码中:

  • {% now "2006" %} 会被自动替换为当前的年份。
  • {% system with name="SiteName" %} 则是 AnQiCMS 中用于获取网站后台设置的网站名称的标签,它会确保网站名称也是动态显示的。

这样,你的网站页脚的年份就会每年自动更新,无需手动修改,既方便又省心。

更多时间格式化选项

除了年份,now 标签结合 Go 语言的参考时间格式,还能输出各种其他的时间信息。只需修改格式字符串即可:

  • 仅显示两位年份: {% now "06" %} (例如:24)
  • 显示完整日期: {% now "2006-01-02" %} (例如:2024-03-15)
  • 显示时间(时分秒): {% now "15:04:05" %} (例如:10:30:00)
  • 显示完整日期和时间: {% now "2006-01-02 15:04:05" %} (例如:2024-03-15 10:30:00)
  • 显示月份的英文缩写: {% now "Jan" %} (例如:Mar)
  • 显示星期几的英文缩写: {% now "Mon" %} (例如:Fri)

例如,如果你想在某个页面显示当前日期和时间,可以这样使用:

<p>当前更新时间:{% now "2006年01月02日 15时04分" %}</p>

针对已存在的时间戳:stampToDate 标签

除了获取当前时间,有时候你可能需要格式化从数据库或其他地方获取到的一个时间戳(通常是一个 10 位或 13 位的数字)。AnQiCMS 也提供了 stampToDate 标签来处理这种情况。

例如,如果你有一个名为 archive.CreatedTime 的变量存储了文档的创建时间戳,你可以这样格式化它:

<p>发布日期:{{ stampToDate(archive.CreatedTime, "2006-01-02") }}</p>

这里的 stampToDate 标签同样遵循 Go 语言的时间格式化规则,让你可以灵活地显示任何时间戳数据。

小提示与**实践

  1. 熟记 Go 语言时间格式化规则: Go 语言的时间格式化确实有点独特,记住 2006-01-02 15:04:05 这个参考时间,然后根据你想要的部分来替换对应的数字和字母,会让你事半功倍。
  2. 清理缓存: 在修改模板代码后,如果页面没有立即更新,记得清除 AnQiCMS 后台的系统缓存,确保新的代码能够生效。
  3. 模板测试: 在正式上线前,在开发环境中多测试几种时间格式,确保它们按预期显示。

通过 {% now %}{{ stampToDate }} 这两个简洁而强大的标签,AnQiCMS 让你能够轻松地在模板中获取和展示各种动态时间信息,为你的网站增添一份灵活性和自动化。


常见问题 (FAQ)

Q1: {% now "2006" %} 标签中的 “2006” 是什么意思?为什么不是当前的年份?

A1: “2006” 并不是指某一个特定的年份,而是 Go 语言时间格式化规则中的一个参考值。Go 语言使用一个固定的日期时间 2006年01月02日 15时04分05秒 -0700 MST 作为格式化的模板。当你使用 {% now "2006" %} 时,Go 语言会根据你提供的格式字符串(这里是 “2006” 对应参考日期中的年份部分),来提取并显示当前时间的年份。如果你想显示月份,你会用 {% now "01" %},因为参考日期中 “01” 代表一月。

Q2: 除了年份,我还能用 {% now %} 标签获取哪些时间信息?

A2: 结合 Go 语言的参考时间格式,{% now %} 标签非常灵活。你可以获取几乎所有你想要的日期时间信息,例如:

  • 月份数字: {% now "01" %} (如 03)
  • 日期数字: {% now "02" %} (如 15)
  • 小时 (24小时制): {% now "15" %} (如 10)
  • 分钟: {% now "04" %} (如 30)
  • 秒: {% now "05" %} (如 00)
  • 月份全称: {% now "January" %} (如 March)
  • 星期几全称: {% now "Monday" %} (如 Friday)

你可以根据需要组合这些参考值来创建自定义的日期时间格式。

Q3: 如果我需要格式化数据库中存储的时间戳(例如文章发布时间),而不是当前时间,应该使用哪个标签?

A3: 如果你需要格式化数据库中存储的时间戳(通常是一个表示秒数的整数),你应该使用 AnQiCMS 提供的 {{ stampToDate(时间戳变量, "格式字符串") }} 标签。例如,若 archive.CreatedTime 是一个时间戳,你可以用 {{ stampToDate(archive.CreatedTime, "2006-01-02") }} 来将其格式化为 YYYY-MM-DD 的形式。{% now %} 标签是用于获取和格式化当前系统时间