菜单
概述
三个因素决定了如何渲染菜单:
- 定义菜单项的方法: 自动 、 在 front matter 中 或 在站点配置中
- 菜单结构:扁平或嵌套
- 用于[本地化菜单项]的方法:站点配置或翻译表
下面的示例处理每种组合。
示例
此部分模板递归地“遍历”菜单结构,渲染本地化的、可访问的嵌套列表。
调用上面的部分模板,传入菜单 ID 和上下文中的当前页面。
layouts/_default/single.html
{{ partial "menu.html" (dict "menuID" "main" "page" .) }}
{{ partial "menu.html" (dict "menuID" "footer" "page" .) }}
页面引用
无论您如何 定义菜单项 ,与页面关联的条目都可以访问页面上下文。
此简单的示例在每个条目的 name
旁边渲染一个名为 version
的页面参数。使用 with
或 if
进行防御性编码,以处理条目:(a)条目指向外部资源,或(b)未定义 version
参数。
layouts/_default/single.html
{{- range site.Menus.main }}
<a href="{{ .URL }}">
{{ .Name }}
{{- with .Page }}
{{- with .Params.version -}}
({{ . }})
{{- end }}
{{- end }}
</a>
{{- end }}
菜单项参数
当您 在站点配置中 或 在 front matter 中 定义菜单项时,您可以包含一个 params
键,如这些示例所示:
此简单的示例为每个锚元素渲染一个 class
属性。使用 with
或 if
进行防御性编码,以处理未定义 params.class
的条目。
本地化
Hugo 提供两种方法来本地化您的菜单项。请参阅 多语言 。