模板函数

内容获取函数

函数 说明
pages 当前语言全部页面
hidden_pages 当前语言隐藏页面
sections 当前语言栏目列表
taxonomies 当前语言分类列表
get_pages([lang]) 获取指定语言的全部页面,省略语言时使用当前语言
get_hidden_pages([lang]) 获取指定语言的隐藏页面,省略语言时使用当前语言
get_sections([lang]) 获取指定语言的栏目列表,省略语言时使用当前语言
get_taxonomies([lang]) 获取指定语言的分类列表,省略语言时使用当前语言
get_page(path, [lang]) 获取页面对象
get_page_url(path, [lang]) 获取页面绝对链接
get_section(path, [lang]) 获取栏目对象
get_section_url(path, [lang]) 获取栏目绝对链接
get_taxonomy(name, [lang]) 获取分类对象
get_taxonomy_url(name, [lang]) 获取分类绝对链接
get_taxonomy_term(taxonomy, name, [lang]) 获取分类项
get_taxonomy_term_url(taxonomy, name, [lang]) 获取分类项绝对链接
dict(k, v, ...) 构造 map
slice(v, ...) 构造列表
startsWith(s, prefix) 判断字符串前缀
load_data(path, format) data/ 或 URL 加载数据
newScratch() 创建临时模板存储

页面列表方法

OrderBy

1{% for page in pages.OrderBy("date desc, title asc") %}

排序字段:datemodifiedtitleweight 及任意 FrontMatter 字段。

GroupBy

1{% for group in pages.GroupBy("date:2006-01").OrderBy("name desc") %}
2  <h2>{{ group.Name }}</h2>
3  {% for page in group.Pages %}
4    <li>{{ page.Title }}</li>
5  {% endfor %}
6{% endfor %}
属性 说明
group.Name 分组名称
group.Pages 当前分组下的页面列表
group.Parent 父分组
group.Children 子分组列表

Limit

1{% for page in pages.Limit(10) %}

First / Last

1{{ pages.First() }}
2{{ pages.Last() }}

Reverse / FilterBy / OrderBy

1{% for page in pages.Reverse() %}
2{% for page in pages.FilterBy("'go' in tags") %}
3{% for page in pages.OrderBy("weight asc, date desc") %}

获取相关(前/后)文章:

1{{ pages.Related(page).Prev }}
2{{ pages.Related(page).Next }}
3{{ pages.Related(page).HasPrev() }}
4{{ pages.Related(page).HasNext() }}

page.Prevpage.Next 的来源。

i18n 翻译函数

函数 说明
i18n(key) 翻译字符串
T(key, args...) 格式化翻译 (%d, %s, %f)
_(key, args...) 同上

过滤器

过滤器 说明 示例
truncate:N 截取 N 字符 {{ text | truncate:100 }}
date:"layout" Go 时间格式 {{ page.Date | date:"2006-01-02" }}
lower 转小写 {{ text | lower }}
upper 转大写 {{ text | upper }}
split:sep 分割 {{ "a,b" | split:"," }}
encrypt:"pw" 加密 (需 hooks.encrypt) {{ page.Content | encrypt:"123" }}
parser:"markdown" 使用已启用的内容解析器把字符串转为 HTML {{ text | parser:"markdown" }}
unmarshal:"yaml" 解析 YAML/TOML/JSON 字符串 {{ text | unmarshal:"yaml" }}
jsonify 转 JSON 字符串 {{ page.FrontMatter | jsonify }}
absURL 转绝对 URL {{ "posts/" | absURL }}
relURL 转相对 URL {{ "/posts/" | relURL }}
slient 丢弃输出,仅保留函数副作用 {{ scratch.Set("k", 1) | slient }}

Date 格式参考:

格式 输出示例 用途
2006-01-02 2024-01-15 日期
15:04:05 20:35:00 时间
January 2, 2006 January 15, 2024 完整日期
Mon, 02 Jan 2006 15:04:05 -0700 RSS pubDate
2006-01-02T15:04:05Z07:00 ISO 8601

配置访问

1{{ config.title }}
2{{ config.base_url }}
3{{ config.author }}
4{{ config.description }}
5{{ config.GetString("params.my_key") }}

config 在模板中是当前语言的配置快照。普通值可用点号访问,需要 viper 方法时可使用 config.GetString(...)

Scratch

1{{ scratch.Set("count", 1) | slient }}
2{{ scratch.Add("count", 2) | slient }}
3{{ scratch.Get("count") }}
4
5{% set local = newScratch() %}
6{{ local.Set("items", slice("a")) | slient }}
7{{ local.Add("items", "b") | slient }}
8{{ local.JSON("items") }}

支持方法:SetGetGetOrSetAddJSON

数据加载

1{% set data = load_data("links.yaml", "yaml") %}
2{% set remote = load_data("https://example.com/data.json", "json") %}

本地路径从站点或主题的 data/ 目录读取;format 支持 yamltomljson,其他格式按字符串返回。读取失败时返回 nil 并记录 warn 日志。

Assets 块

1{% assets css %}
2<link rel="stylesheet" href="{{ config.base_url }}/{{ asset_url }}">
3{% endassets %}
4
5{% assets files="scss/style.scss" sass_compiler="dartsass" filters="cssmin" output="css/style.min.css" %}
6<link rel="stylesheet" href="{{ asset_url }}">
7{% endassets %}

需启用 hooks.assets。资源合并、Sass 编译、压缩和图片处理的配置见 assets hook

Shortcode

1<shortcode youtube id="xxx" />
2<shortcode code lang="python">
3print("hello")
4</shortcode>

Shortcode 模板位于 templates/shortcodes/。模板中可用 paramsbodynamecountercurrent_lang,页面内容提供 page,Section 内容提供 section。详细说明见 短代码 (Shortcode)

©2026 · 红枫文档