布局定制(Layout-custom)📦
通过模板(Templates)技术,预先定义好的页面样式。
官方文档:
- https://gohugo.io/templates/ (模板使用)
模板引擎
布局使用: 参考"布局使用"
Hugo 使用 Go 中 html/template 库 作为模板引擎。
通过模板引擎,可以解析模板中的 {{...}}
标签。
标签 {{...}}
在 Go 中称为 “Action” (动作)。
动作包括两种类型:数据求值和控制结构。
基础语法
1//点 2{{ . }} 3代表传递给模板的数据,表示当前模板的上下文,可以是 Go 语言中的任何类型,比如字符串、数组、结构体等 4点的使用参考:https://www.regisphilibert.com/blog/2018/02/hugo-the-scope-the-context-and-the-dot/ 5 6//注释 7{{/* comment */}} 8 9//空格 10{{- pipeline -}} // 清除 pipeline 前后的空格 11{{- pipeline }} // 清除 pipeline 前面的空格 12 13//变量赋值 14{{$变量名 := "值"}} 15 16//条件判断 17{{if pipeline}} T1 {{else}} T0 {{end}} 18如果不为空则输出T1,否则输出T0 19{{if pipeline}} T1 {{else if pipeline}} T0 {{end}} 20 21//循环语句 22{{range pipeline}} T1 {{end}} 23pipeline 的值必须是数组,切片,map,channel,设置 点. 为数组,切片遍历 map 的值,输出T1 24 25//with 重设点.的值 26{{with pipeline}} T1 {{else}} T0 {{end}} 27如果 pipeline 的值为空, 点. 的值不受影响,输出T1,否则 点. 的值设置成 pipeline 的值,输出T0
定义子模板
1//define 2{{define "name"}} T1 {{end}} 3定义一个特定名称的模板 4 5//template 6{{template "name"}} 7引入指定名称的模板,不传入任何数据. 8 9{{template "name" pipeline}} 10引入指定名称的模板,设置模板上下文 点. 的值为 pipeline 的值 11 12//block 13{{block "name" pipeline}} T1 {{end}} 14定义特定名称的模板,并在当前位置引入该名称的模板,模板的上下文 点. 的值为 pipline 的值,如果该名称的模板未实现(不存在),则输出T1
变量/函数/数据
官方文档:
- https://gohugo.io/variables/ (变量列表)
- https://gohugo.io/functions/ (函数列表)
本站示例: 测试模板中函数和变量的取值
视频教程:
逻辑
视频教程:
Last modified November 4, 2023: Correcting content dir (da1a055)