Hugo模板的基本语法
文章目录
hugo使用的是go语言自带的模板引擎, 模板的标签为{{}}
, {{}}中包含的内容叫’动作’(action).
动作–action
动作分为两种类型
- 数据求值
- 控制结构
求值的结果会直接输出到模板中, 控制结构主要包含条件, 循环, 函数调用等.
点.
|
|
注释
|
|
空格处理
|
|
变量
|
|
给局部变量赋值使用 :=
, 这是golang的语法
条件判断
|
|
循环语句
|
|
with 重设点.
的值
|
|
这就相当于重新创建了新的上下文环境. 在{{with}}
内的点(.)的值为新的值, 也就是{{with pipeline}}
传进来的值.
模板的嵌套
在编写模板的时候, 常常将公用的部分单独做成一个模板, 如每一个页面都有导航栏, 页首, 页脚等, 然后在需要的地方导入这些模板,一般会先编写一个基础模板, 然后在基础模板中引入子模板, hugo默认的基础模板页是_default/baseof.html.
define
|
|
template
|
|
block
|
|
hugo中模板嵌套规则
hugo中引入模板改用partial
, template只用来引入内部模板. partial通过路径的方式引入模板, 被引入的子模板不在需要定义模板名.
如果模板页面通过define
定义了模板名称, 则该子模板会输出到基础模板页baseof.html中block
定义的对应名称的位置.
partial
partial引入模板时的查找路径只会在下面两个地方
1 2 3 |
{{ partial "<PATH>/<PARTIAL>.html" . }} // 语法 layouts/partials/*<PARTIALNAME>.html themes/<THEME>/layouts/partials/*<PARTIALNAME>.html |
baseof.html
baseof.html为hugo的默认基础模板页, 主要用于block
语法. baseof.html存放在以下两个位置
1 2 |
layouts/_default/baseof.html themes/<THEME>/layouts/_default/baseof.html |
hugo先找到需要解析的模板, 如果模板中有{{define "name"}} T1 {{end}}
, 则再去加载baseof.html基础模板, 并对比baseof.html中的{{block "name" pipeline}} T1 {{end}}
, 如果找到相同的名称则在block处输出define中的T1, 如果没有找到相同的名称, 则在block处输出block中的T1
文章作者 Suroppo
上次更新 2019-11-01