最后更新时间:2026-09-22 18:46:24
基础函数是模板开发里最常见的一组函数。它们解决的不是某个业务页面,而是模板写法本身:判断、兜底、输出、时间、路径、字符串处理。
| 函数名称 | 参数 | 返回值 | 函数说明 | 参数说明 |
|---|---|---|---|---|
HasPrefix | s string, prefix string | bool | 判断字符串是否以指定前缀开头 | s 是待判断字符串,prefix 是前缀 |
HasSuffix | s string, suffix string | bool | 判断字符串是否以指定后缀结尾 | s 是待判断字符串,suffix 是后缀 |
Contains | s string, substr string | bool | 判断字符串是否包含子串 | s 是待判断字符串,substr 是子串 |
default | v any, fallback any | any | 当值为空时返回兜底值 | v 是原值,fallback 是兜底值 |
Add | a any, b any | int | 数值相加 | a 和 b 会尽量转成整数 |
date | layout string, v any | string | 格式化时间 | layout 是时间格式,v 是时间值 |
ParseTime | v any, layout string | string | 按指定格式输出时间 | v 是时间值,layout 是格式 |
url | parts ...string | string | 拼接 URL 路径 | parts 是路径片段 |
asset | path string | string | 拼接主题静态资源路径 | path 是静态资源相对路径 |
StrSub | s string, n int | string | 截取字符串前 n 个字符 | s 是原字符串,n 是长度 |
StrLimit | s string, n int, suffix string | string | 截断字符串并追加后缀 | s 是原字符串,n 是长度,suffix 是后缀 |
StripHTML | s string | string | 移除 HTML 标签 | s 是 HTML 文本 |
Join | items []string, sep string | string | 拼接字符串数组 | items 是字符串数组,sep 是分隔符 |
Split | s string, sep string | []string | 拆分字符串 | s 是原字符串,sep 是分隔符 |
IsEmpty | v any | bool | 判断值是否为空 | v 可以是字符串、数组、对象等 |
DefaultCover | img string | string | 返回默认封面图 | img 是原图地址 |
now | 无 | time.Time | 返回当前时间 | 无参数,模板里直接取当前时间 |
safeHTML | s string | template.HTML | 将字符串标记为安全 HTML,按原样输出不转义 | s 是原始 HTML 字符串 |
Str2Html | s string | template.HTML | 同 safeHTML,把字符串当作 HTML 输出 | s 是字符串 |
queryEscape | s string | string | 对字符串做 URL 查询转义 | s 是待转义字符串 |
trimSpace | s string | string | 去除字符串首尾空白 | s 是原始字符串 |
printf | format string, args ...any | string | 按格式拼装字符串(同 fmt.Sprintf) | format 是格式串,args 是参数 |
以下 6 个函数为本版新增补充:now、safeHTML、Str2Html、queryEscape、trimSpace、printf。
当前模板可调用函数共 47 个:本篇基础函数 22 个,加上系统定制函数 25 个。全部由 themeTemplateFuncs() 注册,并在单元测试 TestThemeTemplateFuncNames 中强制校验总数与名称,新增或删除函数必须同步更新白名单与测试。
这里的返回值是基础类型,不是模型类型。也就是说,基础函数只负责把模板写法中的判断、格式化和字符串处理变简单,不承担内容模型输出。
{{if HasPrefix .Request.Path "/template-basics"}}
当前是主题模板基础
{{end}}
{{default .Site.Title "默认站点名"}}
{{date "2006-01-02" .Content.CreatedAt}}