Hugo模板基本语法
Hugo是使用Go语言开发的,Hugo模板语法其实就是Go模板语法。
Hugo模板标签由两对花括号组成:
{{}}
.点表示当前对象:
{{ . }}
输出一个变量:
<h1>{{ .Title }}</h1>
以上例子输出Hugo页面标题。
花括号内侧两端的横线表示清除左/右侧的空白(任何不可见字符):
<h1> {{- .Title -}} </h1>
注释:
{{/* 注释内容 */}}
声明变量:
{{- $name := "背字根" -}}
修改变量的值:
{{- $name = "背字根" -}}
with关键字:
{{- with .Params.excerpt -}}
<meta name="description" content="{{ . }}">
{{- end -}}
以上例子代码第一行会判断变量是否存在,如果存在才会执行主体中的代码。并且,在主体代码中可以用点表示当前对象,即with中的变量。
条件控制语句:
{{- if .IsHome -}}
{{- .Site.Title }} - {{ .Title -}}
{{- else -}}
{{- .Title }} - {{ .Site.Title -}}
{{- end -}}
以上例子判断当前页面是否为首页,根据是否首页输出不同的标题。
if语句逻辑判断:
- eq:等于;
- ne:不等于;
- lt:小于;
- le:小于等于;
- gt:大于;
- ge:大于等于;
- and:逻辑与;
- or:逻辑或;
- not:逻辑非;
判断两个参数是否相等:
{{- if eq .URL "https://www.beizigen.com" -}}
判断第一个参数是否大于第二个参数:
{{- if gt $num 5 -}}
逻辑与示例:
{{- if and (gt $num 5) (lt $num 10) -}}
以上例子判断$num
是否大于5,且小于10。
range循环遍历:
{{- range .Site.Menus.main -}}
<li><a href="{{ .URL }}">{{ .Name }}</a></li>
{{- end -}}
需要获取索引的情况:
{{- range $index, $val := $array -}}
{{ $index }}:{{ $val }}
{{- end -}}
只取5条数据:
{{- range first .5 .Site.Pages -}}
<li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
{{- end -}}
函数使用示例:
<link rel="stylesheet" href="{{ relURL "css/style.css" }}" media="all">
以上示例中relUrl函数返回网站首页地址。
{{- "这是一段很长很长的文本" | truncate 10 -}}
以上示例使用truncate函数截取文字,长度为10
变量作用域:
- if、range、with代码块中定义的变量只能在该代码块中引用;
- 全局变量在if、range、with代码块中引用需要加前缀$;