布局定制(Layout-custom)📦

通过模板(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
    

变量/函数/数据

官方文档:

本站示例: 测试模板中函数和变量的取值

视频教程:

逻辑

视频教程:

Last modified November 4, 2023: Correcting content dir (da1a055)