partials.Include
执行给定模板,可选择性地传入上下文。若局部模板包含 return 语句,则返回该语句的值,否则返回渲染输出。
没有 return 语句时,partial 函数返回 template.HTML 类型的字符串。有 return 语句时,partial 函数可以返回任意数据类型。
下例中有三个局部模板:
layouts/
└── _partials/
├── average.html
├── breadcrumbs.html
└── footer.html“average” 局部模板返回一个或多个数字的平均值。我们通过上下文传入这些数字:
{{ $numbers := slice 1 6 7 42 }}
{{ $average := partial "average.html" $numbers }}“breadcrumbs” 局部模板渲染面包屑导航,需要接收当前页面作为上下文:
{{ partial "breadcrumbs.html" . }}“footer” 局部模板渲染站点页脚。在这个刻意构造的例子中,页脚无需访问当前页面,因此可以省略上下文:
{{ partial "footer.html" }}上下文可以传任何内容:页面、页面集合、标量值、切片或 map。下例传入当前页面与三个标量值:
{{ $ctx := dict
"page" .
"name" "John Doe"
"major" "Finance"
"gpa" 4.0
}}
{{ partial "render-student-info.html" $ctx }}然后在局部模板中:
<p>{{ .name }} is majoring in {{ .major }}.</p>
<p>Their grade point average is {{ .gpa }}.</p>
<p>See <a href="{{ .page.RelPermalink }}">details.</a></p>要从局部模板返回值,请使用 return 语句:
{{ if math.ModBool . 2 }}
{{ return "even" }}
{{ end }}
{{ return "odd" }}相对路径
(0.167.0 新增)
在局部模板中,以 ./ 或 ../ 开头的路径相对于调用方局部模板所在目录解析。例如,给定以下结构:
layouts/
└── _partials/
├── cards/
│ ├── card.html
│ └── image.html
└── footer.html“card” 局部模板可以这样调用它的同级模板与“footer” 局部模板:
{{ partial "./image.html" . }}
{{ partial "../footer.html" . }}仅支持在局部模板内部使用相对路径。从其它任何模板调用 partial "./foo.html",或路径解析后落在 _partials 目录之外,都会报错。