Hugo中如何在content目录的.md文件内创建独立于主菜单的其他菜单
Hugo自定义独立菜单关联页面操作方法
首先先修正你现有配置的语法错误:贴出的主菜单配置最后一行parent属性值缺失闭合双引号,需改为parent = "menu.Inicio",否则配置解析会失败。
1. 定义独立菜单
默认主菜单对应的配置节点是[[menu.main]],要创建和主菜单完全独立的其他菜单,只需要在[menu]节点下新增自定义命名的菜单节点即可,比如新增一个专供其他页面使用的次级菜单secondary(名称可自定义,比如sidebar、footer均可),配置示例:
[menu] # 原有默认主菜单保留 [[menu.main]] name = "Inicio" identifier = "menu.Inicio" url = "/" weight = 1 [[menu.main]] name = "Nosotros" url = "/about-us" weight = 2 parent = "menu.Inicio" # 新增独立自定义菜单 [[menu.secondary]] name = "自定义菜单首页" identifier = "sec-home" url = "/custom-section/" weight = 1 [[menu.secondary]] name = "自定义菜单子页" url = "/custom-section/subpage/" weight = 2 parent = "sec-home"
2. 关联content目录下的md文件
两种关联方式二选一即可:
- 方式1:在md文件头部Front Matter中绑定
打开需要关联到自定义菜单的md文件,在文件开头---包裹的配置块中添加菜单归属配置,直接指定对应菜单名即可,示例:
如果需要页面同时在多个菜单显示,直接追加对应菜单配置即可,比如同时出现在主菜单和自定义次级菜单:--- title: "自定义板块首页" date: 2024-01-01 # 绑定到刚才创建的secondary独立菜单 menu: secondary: weight: 1 # 菜单排序权重,数字越小越靠前 name: "菜单显示名称" # 不填则默认用页面title --- 页面正文内容写在这里--- title: "关于我们" menu: main: weight: 2 secondary: weight: 3 --- - 方式2:直接在config.toml菜单配置中绑定路径
如果不想修改单个md文件的头部配置,写菜单配置时直接把url属性填为对应md文件的发布路径即可,比如md文件路径为content/custom-section/demo.md,默认发布后的访问路径是/custom-section/demo/,菜单配置里url填这个路径就会自动关联对应页面,无需额外修改md文件。
3. 模板中渲染独立菜单
不要复用原有主菜单的渲染代码,在需要显示自定义菜单的页面模板中,添加对应菜单的渲染逻辑即可,模板代码示例:
<ul class="custom-menu"> {{ range .Site.Menus.secondary }} <li> <a href="{{ .URL }}">{{ .Name }}</a> {{ if .HasChildren }} <ul class="sub-menu"> {{ range .Children }} <li><a href="{{ .URL }}">{{ .Name }}</a></li> {{ end }} </ul> {{ end }} </li> {{ end }} </ul>
注意:如果不需要全站显示这个自定义菜单,不要把这段渲染代码放到全局基础模板中,只放到对应页面专属的模板文件里即可,完全不会和默认主菜单冲突。
内容的提问来源于stack exchange,提问作者KuroRain616
相关产品推荐
相关产品推荐

