Render
Syntax
PAGE.Render NAME
Returns
template.HTML
通常在遍历页面集合时使用, Page
对象上的 Render
方法会渲染给定的模板,并将给定的页面作为上下文传递。
{{ range site.RegularPages }}
<h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
{{ .Render "summary" }}
{{ end }}
在上面的示例中,请注意模板(“summary”)是通过其文件名标识的,不包含目录或扩展名。
虽然与 partial
函数类似,但存在关键区别。
Render 方法 |
partial 函数 |
---|---|
Page 对象会自动传递给给定模板。无法传递其他上下文。 |
必须指定上下文,允许传递对象的组合、切片、映射和标量。 |
模板的路径由 内容类型 确定。 | 必须指定模板的路径,相对于 layouts/partials 目录。 |
考虑以下布局结构:
layouts/
├── _default/
│ ├── baseof.html
│ ├── home.html
│ ├── li.html <-- 用于其他内容类型
│ ├── list.html
│ ├── single.html
│ └── summary.html
└── books/
├── li.html <-- 当内容类型为“books”时使用
└── summary.html
以及此模板:
<ul>
{{ range site.RegularPages.ByDate }}
{{ .Render "li" }}
{{ end }}
</ul>
渲染类型为“books”的内容时, Render
方法调用:
layouts/books/li.html
对于所有其他内容类型, Render
方法调用:
layouts/_default/li.html
有关更多示例,请参阅 内容视图 。