2.9 KiB
title | description | categories | keywords | action | toc | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
PageRef | Returns the `pageRef` property of the given menu entry. |
|
true |
The use case for this method is rare.
In almost also scenarios you should use the URL
method instead.
Explanation
If you specify a pageRef
property when defining a menu entry in your site configuration, Hugo looks for a matching page when rendering the entry.
If a matching page is found:
- The
URL
method returns the page's relative permalink - The
Page
method returns the correspondingPage
object - The
HasMenuCurrent
andIsMenuCurrent
methods on aPage
object return the expected values
If a matching page is not found:
- The
URL
method returns the entry'surl
property if set, else an empty string - The
Page
method returns nil - The
HasMenuCurrent
andIsMenuCurrent
methods on aPage
object returnfalse
{{% note %}}
In almost also scenarios you should use the URL
method instead.
{{% /note %}}
Example
This example is contrived.
{{% note %}}
In almost also scenarios you should use the URL
method instead.
{{% /note %}}
Consider this content structure:
content/
├── products.md
└── _index.md
And this menu definition:
{{< code-toggle file=hugo >}} menus.main name = 'Products' pageRef = '/products' weight = 10 menus.main name = 'Services' pageRef = '/services' weight = 20 {{< /code-toggle >}}
With this template code:
{{< code file=layouts/partials/menu.html >}}
-
{{ range .Site.Menus.main }}
- {{ .Name }} {{ end }}
Hugo render this HTML:
<ul>
<li><a href="/products/">Products</a></li>
<li><a href="">Services</a></li>
</ul>
In the above note that the href
attribute of the second anchor
element is blank because Hugo was unable to find the "services" page.
With this template code:
{{< code file=layouts/partials/menu.html >}}
-
{{ range .Site.Menus.main }}
- {{ .Name }} {{ end }}
Hugo renders this HTML:
<ul>
<li><a href="/products/">Products</a></li>
<li><a href="/services">Services</a></li>
</ul>
In the above note that Hugo populates the href
attribute of the second anchor
element with the pageRef
property as defined in the site configuration because the template code falls back to the PageRef
method.