hugo/docs/content/en/methods/page/Render.md
Bjørn Erik Pedersen 5fd1e74903
Merge commit '9b0050e9aabe4be65c78ccf292a348f309d50ccd' as 'docs'
```
git subtree add --prefix=docs/ https://github.com/gohugoio/hugoDocs.git master --squash
```

Closes #11925
2024-01-27 10:48:57 +01:00

2 KiB

title description categories keywords action aliases
Render Renders the given template with the given page as context.
related returnType signatures
functions/partials/Include
functions/partials/IncludeCached
template.HTML
PAGE.Render NAME
/functions/render

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 method partial 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.