Add menu params

Fixes #7951
This commit is contained in:
David Jones
2020-11-22 13:09:59 -08:00
committed by GitHub
parent e4fcb672ed
commit 8f5c9a747f
4 changed files with 91 additions and 0 deletions

View File

@@ -113,6 +113,24 @@ This means that `.Title` will be used unless `.LinkTitle` is present, etc. In pr
In this example, the top level of the menu is defined in your [site `config` file][config]. All content entries are attached to one of these entries via the `.Parent` field.
## Params
You can also add user-defined content to menu items via the `params` field.
A common use case is to define a custom param to add a css class to a specific menu item.
{{< code-toggle file="config" >}}
[[menu.main]]
name = "about hugo"
pre = "<i class='fa fa-heart'></i>"
weight = -110
identifier = "about"
url = "/about/"
[menu.main.params]
class = "highlight-menu-item"
{{</ code-toggle >}}
## Render Menus
See [Menu Templates](/templates/menu-templates/) for information on how to render your site menus within your templates.

View File

@@ -160,3 +160,23 @@ Here's an example:
{{ end }}
</nav>
```
## Using .Params in Menus
User-defined content on menu items are accessible via `.Params`.
Here's an example:
```
<nav class="sidebar-nav">
{{ range .Site.Menus.main }}
<a href="{{ .URL }}" title="{{ .Title }}" class="{{ with .Params.class }}{{ . }}{{ end }}">
{{- .Name -}}
</a>
{{ end }}
</nav>
```
{{% note %}}
With Menu-level .Params they can easily exist on one menu item but not another. It's recommended to access them gracefully using the [with function](/functions/with).
{{% /note %}}