在 Hugo 的模板中,变量是可扩展的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| {{ $variable := "hello world" }}
{{/* 访问变量 */}}
{{ $variable }}
{{/* 进行计算 */}}
{{ $sum := 1 + 1 }}
{{ $sum }}
{{/* 两个变量相加 */}}
{{ $valueOne := 1 }}
{{ $valueTwo := 2 }}
{{ $result := add $valueOne $valueTwo }}
{{ $result }}
|
除了你自己定义的变量,Hugo 也会在模板中自动创建一些内部变量,以便在渲染页面时为你提供有用的信息。这些变量通常用于控制网站的样式和页面布局,以及访问站点中的内容和元数据。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| {{/* 站点元数据 */}}
{{ .Site.Title }}
{{ .Site.Params.author }}
{{ .Site.Params.description }}
{{/* 页面元数据 */}}
{{ .Title }}
{{ .Params.date }}
{{ .Params.author }}
{{ .Description }}
{{ .Type }}
{{ .Content }}
{{/* 访问站点的相关页面 */}}
{{ .Site.GetPage "section" "blog" }}
{{ .Site.GetPage "url" "/" }}
{{ .Site.GetPage "permalink" "/blog/" }}
{{/* 访问站点相关资源 */}}
{{ .Site.GetPage "page" "/css/styles.css" }}
{{ .Site.GetPage "page" "/images/banner.jpg" }}
{{/* 迭代站点相关内容 */}}
{{ range .Data.Pages }}
{{ .Render "summary" }}
{{ end }}
{{/* 参数定位 */}}
{{ $.Param "foo" }}
|
- 在 Hugo 模板中,你可以访问网站元数据和内容页面中的字段并将其用于渲染。
1
2
3
4
5
6
7
| {{ .Site.Params.author }}
{{ .Site.Params.description }}
{{ .Title }}
{{ .Content }}
{{ .Params.date }}
{{ .Params.author }}
{{ .Params.tags }}
|
每个Go模板获得一个数据对象。在Hugo中,每个模板都传递一个Page。在下面的示例中,. title是Page变量中可访问的元素之一。由于Page是模板的默认作用域,因此当前作用域中的Title元素(。-“点”)可以通过点前缀(.Title)访问:
1
| <title>{{ .Title }}</title>
|
值也可以存储在自定义变量中并在以后引用:
1
2
| {{ $address := "123 Main St." }}
{{ $address }}
|
变量可以使用=操作符重新定义。下面的示例在主页上打印“Var is Hugo Home”,在所有其他页面上打印“Var is Hugo page”:
1
2
3
4
5
| {{ $var := "Hugo Page" }}
{{ if .IsHome }}
{{ $var = "Hugo Home" }}
{{ end }}
Var is {{ $var }}
|