docs: example for cascading sidebar menu reusing existing menus #970

This commit is contained in:
Sören Weber 2024-12-30 20:04:38 +01:00
parent d25f856477
commit 49b2f8f770
No known key found for this signature in database
GPG key ID: BEC6D55545451B6D
2 changed files with 17 additions and 7 deletions

View file

@ -9,12 +9,16 @@ weight = 4
The theme can build menu trees from [the structure of your page files](authoring/structure) or from [Hugo's build in menu feature](https://gohugo.io/content-management/menus/).
- {{% badge style="cyan" icon="gears" title=" " %}}Option{{% /badge %}} All configuration options in your `hugo.toml` apply to all menus but can be changed individually.
---
- {{% badge style="cyan" icon="gears" title=" " %}}Option{{% /badge %}} Configuration options in your `hugo.toml` apply to all menus.
- {{% badge style="green" icon="fa-fw fab fa-markdown" title=" " %}}Front Matter{{% /badge %}} In case of page structure menus, individual configuration is done via a page's front matter.
- {{% badge color="blueviolet" icon="bars" title=" " %}}Menu{{% /badge %}}. In case of Hugo menus, individual configuration is done via a menu entry's configuration.
---
## Expand State of Submenus
{{% badge style="cyan" icon="gears" title=" " %}}Option{{% /badge %}} {{% badge style="green" icon="fa-fw fab fa-markdown" title=" " %}}Front Matter{{% /badge %}} You can change how submenus appear with `alwaysopen`.
@ -222,7 +226,9 @@ sidebarmenus = [
Suppose you are building a site that contains a topmost `blog` and `documentation` section.
When the user is on one of the blog pages he should only see a menu containing all blog pages, while on a documentation page he should only see a menu containing all doc pages.
When the user is on one of the blog pages he should only see a page menu containing all blog pages, while on a documentation page he should only see a page menu containing all doc pages.
For both sections, the default `shortcuts` Hugo menu should be displayed as if [defaults menus](#defining-sidebar-menus) were used.
Directory structure:
@ -232,23 +238,26 @@ content
│ ├── post-1.md
│ ├── post-2.md
│ ├── post-3.md
│ └── _index_.md
│ └── _index.md
├── docs
│ ├── topic-1.md
│ ├── topic-2.md
│ ├── topic-3.md
│ └── _index_.md
│ └── _index.md
└── _index.md
````
{{% badge style="cyan" icon="gears" title=" " %}}Option{{% /badge %}} {{% badge style="green" icon="fa-fw fab fa-markdown" title=" " %}}Front Matter{{% /badge %}} Using [Hugo's cascade feature](https://gohugo.io/content-management/front-matter/#cascade), we can redefine the menus once in `blog/_index.md` and `docs/_index.md` setting `sidebarmenus` so they will be used in all children pages.
Setting the `sidebarmenus` Front Matter will overwrite all default menus. If you want to display the `shortcuts` Hugo menu as well like in this example, you have to declare it with the Front Matter as given in the [default options](#defining-sidebar-menus).
{{< multiconfig fm=true file="blog/_index.md">}}
title = 'Blog'
[[cascade]]
[cascade.params]
sidebarmenus = [
{ type = 'page', identifier = 'blog', pageRef = '/blog' },
{ type = 'menu', identifier = 'shortcuts' },
]
{{< /multiconfig >}}
@ -258,6 +267,7 @@ title = 'Documentation'
[cascade.params]
sidebarmenus = [
{ type = 'page', identifier = 'docs', pageRef = '/docs' },
{ type = 'menu', identifier = 'shortcuts' },
]
{{< /multiconfig >}}
@ -273,11 +283,11 @@ content
│ ├── ref-a.md
│ ├── ref-b.md
│ ├── ref-c.md
│ └── _index_.md
│ └── _index.md
├── topic-blue.md
├── topic-red.md
├── topic-yellow.md
└── _index_.md
└── _index.md
````
You now want to include `ref-b` as separate `topic-green` entry after `topic-blue` in your menu.

View file

@ -1 +1 @@
7.2.1+ec88e24f46955bcf1aa3f38ac143982eff08d8a6
7.2.1+d25f856477223170b0de0b284252aa54b3e6255b