HUGO
News Docs Themes Community GitHub

Render

Renders the given template with the given page as context.

Syntax

PAGE.Render NAME

Returns

template.HTML

Typically used when ranging over a page collection, the Render method on a Page object renders the given template, passing the given page as context.

{{ range site.RegularPages }}
  <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
  {{ .Render "summary" }}
{{ end }}

In the example above, note that the template (“summary”) is identified by its file name without directory or extension.

Although similar to the partial function, there are key differences.

Render methodpartial function
The Page object is automatically passed to the given template. You cannot pass additional context.You must specify the context, allowing you to pass a combination of objects, slices, maps, and scalars.
The path to the template is determined by the content type.You must specify the path to the template, relative to the layouts/partials directory.

Consider this layout structure:

layouts/
├── _default/
│   ├── baseof.html
│   ├── home.html
│   ├── li.html      <-- used for other content types
│   ├── list.html
│   ├── single.html
│   └── summary.html
└── books/
    ├── li.html      <-- used when content type is "books"
    └── summary.html

And this template:

<ul>
  {{ range site.RegularPages.ByDate }}
    {{ .Render "li" }}
  {{ end }}
</ul>

When rendering content of type “books” the Render method calls:

layouts/books/li.html

For all other content types the Render methods calls:

layouts/_default/li.html

See content views for more examples.