最后更新时间:2026-05-07 10:00:00
系统定制函数是 VVCMS 额外提供给模板使用的一组函数。它们不是 Go template 标准函数,而是主题开发时拿来直接消费内容、栏目和主题配置的工具。
| 函数名称 | 参数 | 返回值 | 函数说明 | 参数说明 |
|---|---|---|---|---|
HomeSlides | 无 | []HomeSlide | 读取首页轮播数据 | 无参数,直接返回轮播模型列表 |
FriendLinks | 无 | []FriendLink | 读取友情链接数据 | 无参数,直接返回友情链接模型列表 |
Site | 无 | *conf.SiteOption | 读取站点配置 | 无参数,返回站点模型 |
ThemesExt | 无 | map[string]any | 读取主题扩展配置 | 无参数,返回主题级配置映射 |
ColumnsTree | 无 | []*models.Column | 读取全站栏目树 | 无参数,返回栏目模型列表 |
Top | 无 | []ContentCardVM | 读取置顶内容 | 无参数,返回内容卡片模型列表 |
Recom | 无 | []ContentCardVM | 读取推荐内容 | 无参数,返回内容卡片模型列表 |
Latest | 无 | []ContentCardVM | 读取最新内容 | 无参数,返回内容卡片模型列表 |
Hot | 无 | []ContentCardVM | 读取热门内容 | 无参数,返回内容卡片模型列表 |
Column | slug string | *models.Column | 按 slug 获取栏目 | slug 是栏目别名 |
ColumnByID | id int32 | *models.Column | 按 ID 获取栏目 | id 是栏目主键 |
ColumnByName | name string | *models.Column | 按名称获取栏目 | name 是栏目名称 |
ChildrenColumns | slug string | []*models.Column | 读取子栏目 | slug 是父栏目别名 |
ParentColumn | columnID int32 | *models.Column | 读取父栏目 | columnID 是栏目 ID |
SiblingColumns | columnID int32 | []*models.Column | 读取同级栏目 | columnID 是栏目 ID |
ColumnContents | slug string, num int | []ContentCardVM | 读取指定栏目的内容列表 | slug 是栏目别名,num 是数量 |
ContentByID | id int32 | *ContentCardVM | 按 ID 获取内容 | id 是内容 ID |
ContentBySlug | slug string | *ContentCardVM | 按 slug 获取内容 | slug 是内容别名 |
ContentsByTag | tag string, num int | []ContentCardVM | 读取标签内容列表 | tag 是标签名,num 是数量 |
ContentsByIds | idsCsv string, ...int | []ContentCardVM | 按 ID 列表读取内容 | idsCsv 是逗号分隔 ID 串,可选参数用于兜底或过滤 |
Tags | num int | []TagLinkVM | 读取标签列表 | num 是数量 |
Messages | limit int | []*models.Interaction | 读取留言列表 | limit 是数量 |
ContentComment | contentID int32 | []*models.Interaction | 读取文章评论列表 | contentID 是内容 ID |
Related | contentID int32, num int | []RelatedVM | 读取相关文章 | contentID 是内容 ID,num 是数量 |
ColumnExtFilter | column *models.Column, request *RequestData | []ColumnExtFilterItemVM | 生成栏目扩展筛选项 | column 是栏目对象,request 是当前请求 |
Reverse | items []T | []T | 反转切片顺序 | items 是任意切片 |
这里的返回值同样写的是模型类型,不是某个具体的展示值。模板里只需要知道函数会返回哪类数据,之后再在内容模型里填真实内容。
range,是否 Reverse,是否 if 判断。