hugo/docs/content/en/methods/menu/ByWeight.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

1.9 KiB

title description categories keywords action
ByWeight Returns the given menu with its entries sorted by weight, then by name, then by identifier.
related returnType signatures
navigation.Menu
MENU.ByWeight

The ByWeight method returns the given menu with its entries sorted by weight, then by name, then by identifier. This is the default sort order.

Consider this menu definition:

{{< code-toggle file=hugo >}} menus.main identifier = 'about' name = 'About' pageRef = '/about' weight = 20

menus.main identifier = 'services' name = 'Services' pageRef = '/services' weight = 10

menus.main identifier = 'contact' name = 'Contact' pageRef = '/contact' weight = 30 {{< /code-toggle >}}

To sort the entries by weight, then by name, then by identifier:

<ul>
  {{ range .Site.Menus.main.ByWeight }}
    <li><a href="{{ .URL }}">{{ .Name }}</a></li>
  {{ end }}
</ul>

Hugo renders this to:

<ul>
  <li><a href="/services/">Services</a></li>
  <li><a href="/about/">About</a></li>
  <li><a href="/contact">Contact</a></li>
</ul>

{{% note %}} In the menu definition above, note that the identifier property is only required when two or more menu entries have the same name, or when localizing the name using translation tables.

{{% /note %}}

You can also sort menu entries using the sort function. For example, to sort by weight in descending order:

<ul>
  {{ range sort .Site.Menus.main "Weight" "desc" }}
    <li><a href="{{ .URL }}">{{ .Name }}</a></li>
  {{ end }}
</ul>

When using the sort function with menu entries, specify any of the following keys: Identifier, Name, Parent, Post, Pre, Title, URL, or Weight.