在构建和维护网站时,我们经常需要在页面上显示一些动态信息,例如当前年份。这对于版权声明、年度报告或任何需要实时年份信息的场景都非常实用。AnQiCMS 凭借其简洁高效的模板系统,让获取并显示当前年份变得轻而易举。
AnQiCMS 的模板系统借鉴了 Django 模板引擎的语法,这意味着它提供了直观的标签和变量来操作内容。接下来,我们将探讨如何在你的 AnQiCMS 模板中轻松实现这一功能。
获取当前年份的核心方法:{% now %} 标签
AnQiCMS 内置了一个功能强大的 now 标签,专门用于在模板中获取并显示当前时间。要获取当前年份,我们只需要配合 Go 语言的时间格式化规则来使用它。
它的基本用法是:{% now "格式字符串" %}。
这个“格式字符串”是关键。对于年份,我们通常会使用 "2006" 作为格式字符串。你可能会觉得奇怪,为什么是 “2006” 而不是当前年份,比如 “2023” 或 “2024”?这正是 Go 语言时间格式化的独特之处。在 Go 语言中,时间格式不是用 YYYY、MM 这样的占位符,而是使用一个固定的参考时间 2006-01-02 15:04:05.999999999 -0700 MST 来定义输出格式。你需要将你想要的时间部分的参考值写入格式字符串中,Go 就会根据你的输入来推断你想要的输出格式。
所以,当你使用 {% now "2006" %} 时,它会根据参考时间中的年份部分 “2006” 来输出当前日期的年份。
实际操作:将当前年份添加到你的模板
最常见的应用场景之一是在网站页脚的版权声明中显示当前年份。
例如,如果你想在页脚显示 “© 2024 你的网站名称 版权所有.“,你可以在你的模板文件(比如 footer.html 或 bash.html)中添加如下代码:
<footer>
<p>© {% 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 语言的时间格式化规则,让你可以灵活地显示任何时间戳数据。
小提示与**实践
- 熟记 Go 语言时间格式化规则: Go 语言的时间格式化确实有点独特,记住
2006-01-02 15:04:05这个参考时间,然后根据你想要的部分来替换对应的数字和字母,会让你事半功倍。 - 清理缓存: 在修改模板代码后,如果页面没有立即更新,记得清除 AnQiCMS 后台的系统缓存,确保新的代码能够生效。
- 模板测试: 在正式上线前,在开发环境中多测试几种时间格式,确保它们按预期显示。
通过 {% 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 %} 标签是用于获取和格式化当前系统时间。