系统定制函数

最后更新时间:2026-05-07 10:00:00

1. 这篇要解决什么

系统定制函数是 VVCMS 额外提供给模板使用的一组函数。它们不是 Go template 标准函数,而是主题开发时拿来直接消费内容、栏目和主题配置的工具。

2. 系统定制函数表

函数名称参数返回值函数说明参数说明
HomeSlides[]HomeSlide读取首页轮播数据无参数,直接返回轮播模型列表
FriendLinks[]FriendLink读取友情链接数据无参数,直接返回友情链接模型列表
Site*conf.SiteOption读取站点配置无参数,返回站点模型
ThemesExtmap[string]any读取主题扩展配置无参数,返回主题级配置映射
ColumnsTree[]*models.Column读取全站栏目树无参数,返回栏目模型列表
Top[]ContentCardVM读取置顶内容无参数,返回内容卡片模型列表
Recom[]ContentCardVM读取推荐内容无参数,返回内容卡片模型列表
Latest[]ContentCardVM读取最新内容无参数,返回内容卡片模型列表
Hot[]ContentCardVM读取热门内容无参数,返回内容卡片模型列表
Columnslug string*models.Column按 slug 获取栏目slug 是栏目别名
ColumnByIDid int32*models.Column按 ID 获取栏目id 是栏目主键
ColumnByNamename string*models.Column按名称获取栏目name 是栏目名称
ChildrenColumnsslug string[]*models.Column读取子栏目slug 是父栏目别名
ParentColumncolumnID int32*models.Column读取父栏目columnID 是栏目 ID
SiblingColumnscolumnID int32[]*models.Column读取同级栏目columnID 是栏目 ID
ColumnContentsslug string, num int[]ContentCardVM读取指定栏目的内容列表slug 是栏目别名,num 是数量
ContentByIDid int32*ContentCardVM按 ID 获取内容id 是内容 ID
ContentBySlugslug string*ContentCardVM按 slug 获取内容slug 是内容别名
ContentsByTagtag string, num int[]ContentCardVM读取标签内容列表tag 是标签名,num 是数量
ContentsByIdsidsCsv string, ...int[]ContentCardVM按 ID 列表读取内容idsCsv 是逗号分隔 ID 串,可选参数用于兜底或过滤
Tagsnum int[]TagLinkVM读取标签列表num 是数量
Messageslimit int[]*models.Interaction读取留言列表limit 是数量
ContentCommentcontentID int32[]*models.Interaction读取文章评论列表contentID 是内容 ID
RelatedcontentID int32, num int[]RelatedVM读取相关文章contentID 是内容 ID,num 是数量
ColumnExtFiltercolumn *models.Column, request *RequestData[]ColumnExtFilterItemVM生成栏目扩展筛选项column 是栏目对象,request 是当前请求
Reverseitems []T[]T反转切片顺序items 是任意切片

3. 怎么理解返回值

这里的返回值同样写的是模型类型,不是某个具体的展示值。模板里只需要知道函数会返回哪类数据,之后再在内容模型里填真实内容。

4. 使用建议

  • 主题层优先使用这些系统函数来取内容,而不是自己拼接数据库逻辑。
  • 目录、轮播、推荐、标签、留言都应该通过函数读取。
  • 如果函数返回的是切片,模板里再决定是否 range,是否 Reverse,是否 if 判断。