模板引擎注册了一组函数,可直接在模板中调用(例如 {{ParseTime .CreatedAt "2006-01-02"}})。
字符串/通用:
- HasPrefix(s, prefix)
- HasSuffix(s, suffix)
- Contains(s, substr)
- default(v, fallback):当 v 为 nil 或空字符串时返回 fallback
- printf(...):fmt.Sprintf
数值:
- Add(a, b):把 a/b 尽力转成整数后相加
时间:
- now():当前时间
- date(layout, time):格式化 time(layout 为空默认 2006-01-02)
- ParseTime(v, layout):当前实现等同于 date(layout, v) 的包装
HTML/字符串处理:
- safeHTML(s):返回 template.HTML
- Str2Html(s):返回 template.HTML(常用于输出文章 HTML)
- StrSub(s, n):截取前 n 个 rune
URL/路径:
- url(parts...):拼接 URL 路径片段
- asset(path):拼接主题静态资源到 /static/ 前缀
内容/组件数据(用于侧栏、推荐等“主题组件”):
- HomeSlides():轮播数据
- FriendLinks():友情链接
- Top():置顶内容列表
- Recom():推荐内容列表
- Latest():最新内容列表
- Hot():热门内容列表
- Tags(num):标签列表(num 为数量)
- ColumnContents(slug, num):指定栏目的内容列表
- ContentsByIds(idsCsv, ...):按 ID 列表取内容(idsCsv 支持逗号/空格/分号/竖线等分隔)
互动/评论:
- Messages(limit):留言列表
- ContentComment(contentID):指定文章的评论列表
- Related(contentID, num):相关文章
约定:
- 新主题制作时,优先复用这些函数实现侧栏/轮播/友情链接等模块,而不是自行“猜测”数据来源。
站点开关字段提示(模板常用):
- 文章评论区(article.html)通常使用:.Content.EnableComment(内容是否允许评论).Site.EnableMessage(站点是否开启评论/互动能力)
- 留言页(message.html)通常使用:.Site.EnableComment(站点是否开启留言).Site.EnableCaptcha(是否启用验证码)