菜单模板
概览
有三个因素决定如何渲染一个菜单:
下面的示例处理了每个组合情况。
示例
这个局部模板递归地“遍历”菜单结构,渲染一个本地化、可访问的嵌套列表。
调用上面的局部模板,传入菜单 ID 和当前页面的上下文。
layouts/_default/single.html
{{ partial "menu.html" (dict "menuID" "main" "page" .) }}
{{ partial "menu.html" (dict "menuID" "footer" "page" .) }}页面引用
不论如何定义菜单项,与页面关联的菜单项都可以访问页面的变量和方法。
这个简单的示例在每个项的“名称”旁边渲染一个名为 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 }}菜单项参数
当你[在站点配置中定义菜单项]或[在前置数据中定义菜单项]时,可以包含一个 params 键,如以下示例所示:
这个简单的示例为每个锚点元素渲染了一个 class 属性。使用 with 或 if 来防御性地处理 params.class 未定义的情况。
本地化
Hugo 提供了两种方法来本地化您的菜单项。参见多语言。