问题描述
我想使用 Hugo 创建一个带有深层菜单的网站。我希望能够使子项成为新的低级项的父项。 我尝试使用本网站的教程。 https://codingnconcepts.com/hugo/nested-menu-hugo/
我能够创建单级子菜单,但我想要一个逻辑系统,我可以继续自动创建子页面。
<nav class="nav">
<ul class="menu">
{{ range .Site.Menus.main }}
<li class="{{ if $currentPage.HasMenuCurrent "main" . }}active{{ end }}">
<span>{{ .Name }}</span>
{{ if .HasChildren }}
<span class="drop-icon" for="{{ .Name }}">▾</span>
<ul class="sub-menu">
{{ range .Children }}
<li class="{{ if $currentPage.HasMenuCurrent "main" . }}active{{ end }}">
<span>{{ .Name }}</span>
</li>
{{ end }}
</ul>
{{ end }}
</li>
{{ end }}
</ul>
</nav>
解决方法
在 config.toml 中:
[menu]
[[menu.main]]
name = "home"
identifier = "home"
url = "/home/"
[[menu.main]]
parent = "home"
name = "about"
identifier = "about"
url = "/about/"
[[menu.main]]
parent = "home"
name = "contact"
identifier = "contact"
url = "/contact/"
然后是您的模板 - 来自 docs
<aside>
<ul>
{{ $currentPage := . }}
{{ range .Site.Menus.main }}
{{ if .HasChildren }}
<li class="{{ if $currentPage.HasMenuCurrent "main" . }}active{{ end }}">
<a href="#">
{{ .Pre }}
<span>{{ .Name }}</span>
</a>
</li>
<ul class="sub-menu">
{{ range .Children }}
<li class="{{ if $currentPage.IsMenuCurrent "main" . }}active{{ end }}">
<a href="{{ .URL }}">{{ .Name }}</a>
</li>
{{ end }}
</ul>
{{ else }}
<li>
<a href="{{ .URL }}">
{{ .Pre }}
<span>{{ .Name }}</span>
</a>
</li>
{{ end }}
{{ end }}
</ul>
</aside>
祝你好运