Based on front matter, Hugo uses several factors to identify content related to the given page. Use the default [related content configuration], or tune the results to the desired indices and parameters. See [details].
The argument passed to the Related
method may be a Page
or an options map. For example, to pass the current page:
layouts/_default/single.html
{{ with .Site.RegularPages.Related . | first 5 }}
<p>Related pages:</p>
<ul>
{{ range . }}
<li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
{{ end }}
</ul>
{{ end }}
To pass an options map:
layouts/_default/single.html
{{ $opts := dict
"document" .
"indices" (slice "tags" "keywords")
}}
{{ with .Site.RegularPages.Related $opts | first 5 }}
<p>Related pages:</p>
<ul>
{{ range . }}
<li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
{{ end }}
</ul>
{{ end }}
Options #
- indices
- (
slice
) The indices to search within. - document
- (
page
) The page for which to find related content. Required when specifying an options map. - namedSlices
- (
slice
) The keywords to search for, expressed as a slice ofKeyValues
using thekeyVals
function. - fragments
- (
slice
) A list of special keywords that is used for indices configured as type “fragments”. This will match thefragment
identifiers of the documents.
A contrived example using all of the above:
{{ $page := . }}
{{ $opts := dict
"indices" (slice "tags" "keywords")
"document" $page
"namedSlices" (slice (keyVals "tags" "hugo" "rocks") (keyVals "date" $page.Date))
"fragments" (slice "heading-1" "heading-2")
}}