HUGO

  • 新闻
  • 文档
  • 主题
  • 社区
  • GitHub
gohugoio 加星
  • 关于
    • 本节内容
    • 简介
    • 特性
    • 隐私
    • 安全
    • 许可
  • 安装
    • 本节内容
    • macOS
    • Linux
    • Windows
    • BSD
  • 入门
    • 本节内容
    • 快速开始
    • 基本用法
    • 目录结构
    • 配置
    • 配置标记
    • 配置构建
    • 术语表
    • 外部学习资源
  • 快速参考
    • 本节内容
    • 表情符号
    • 函数
    • 方法
    • 页面集合
  • 内容管理
    • 本节内容
    • 组织
    • 页面捆绑
    • 内容格式
    • 前置信息
    • 构建选项
    • 页面资源
    • 图像处理
    • 简码
    • 相关内容
    • 章节
    • 内容类型
    • 原型
    • 分类法
    • 摘要
    • 链接和交叉引用
    • URL 管理
    • 菜单
    • 评论
    • 多语言
    • Markdown 属性
    • 语法高亮
    • 图表
    • 数学
    • 数据源
    • 内容适配器
  • 模板
    • 本节内容
    • 简介
    • 模板类型
    • 查找顺序
    • 基础模板
    • 主页模板
    • 单页模板
    • 章节模板
    • 分类模板
    • 术语模板
    • 局部模板
    • 内容视图模板
    • 简码模板
    • 站点地图模板
    • RSS 模板
    • 404 模板
    • robots.txt 模板
    • 菜单
    • 分页
    • 嵌入式模板
    • 自定义输出格式
  • 函数
    • 本节内容
    • cast
    • collections
    • compare
    • crypto
    • css
    • data
    • debug
    • diagrams
    • encoding
    • fmt
    • global
    • go template
    • hash
    • hugo
    • images
    • inflect
    • js
    • lang
    • math
    • openapi3
    • os
    • partials
    • path
    • reflect
    • resources
    • safe
    • strings
    • templates
    • time
    • transform
    • urls
  • 方法
    • 本节内容
    • 持续时间
    • 菜单
    • 菜单项
    • 页面
    • 分页器
    • 页面
    • 资源
    • 简码
    • 站点
    • 分类法
    • 时间
  • 渲染钩子
    • 本节内容
    • 简介
    • 块引用
    • 代码块
    • 标题
    • 图像
    • 链接
    • 透传
    • 表格
  • 简码
    • 本节内容
    • 评论
    • 详情
    • 图示
    • Gist
    • 高亮
    • Instagram
    • 参数
    • QR
    • Ref
    • Relref
    • Vimeo
    • X
    • YouTube
  • Hugo 模块
    • 本节内容
    • 配置 Hugo 模块
    • 使用 Hugo 模块
    • 主题组件
  • Hugo 管道
    • 本节内容
    • 简介
    • 将 Sass 转译为 CSS
    • PostCSS
    • 后处理
    • JavaScript 构建
    • 资源压缩
    • 连接资源
    • 指纹识别和 SRI 哈希
    • 来自字符串的资源
    • 来自模板的资源
  • CLI
  • 故障排除
    • 本节内容
    • 审计
    • 日志记录
    • 检查
    • 弃用
    • 性能
    • 常见问题解答
  • 开发者工具
    • 本节内容
    • 编辑器插件
    • 前端
    • 搜索
    • 迁移
    • 其他项目
  • 托管和部署
    • 本节内容
    • Hugo 部署
    • 使用 Rclone 部署
    • 使用 Rsync 部署
    • 在 21YunBox 上托管
    • 在 AWS Amplify 上托管
    • 在 Azure 静态 Web 应用上托管
    • 在 Cloudflare Pages 上托管
    • 在 Firebase 上托管
    • 在 GitHub Pages 上托管
    • 在 GitLab Pages 上托管
    • 在 KeyCDN 上托管
    • 在 Netlify 上托管
    • 在 Render 上托管
  • 贡献
    • 本节内容
    • 开发
    • 文档
    • 主题
  • 维护
内容管理

菜单

通过定义条目、本地化每个条目并呈现生成的数据结构来创建菜单。

概述

要为您的站点创建菜单

  1. 定义菜单项
  2. 本地化每个条目
  3. 使用模板渲染菜单

创建多个菜单,可以是扁平的也可以是嵌套的。 例如,为页眉创建主菜单,为页脚创建单独的菜单。

有三种方法可以定义菜单项

  1. 自动
  2. 在前置信息中
  3. 在站点配置中

尽管您可以在定义菜单时组合使用这些方法,但如果整个站点都使用一种方法,则菜单将更容易概念化和维护。

自动定义

要为站点的每个顶级章节自动定义菜单项,请在站点配置中启用章节页面菜单。

hugo.
     
sectionPagesMenu: main
sectionPagesMenu = 'main'
{
   "sectionPagesMenu": "main"
}

这将创建一个菜单结构,您可以在模板中使用 site.Menus.main 访问该结构。 有关详细信息,请参阅菜单模板。

在前置信息中定义

要将页面添加到“main”菜单

content/about.md
     
---
menus: main
title: About
---
+++
menus = 'main'
title = 'About'
+++
{
   "menus": "main",
   "title": "About"
}

在模板中使用 site.Menus.main 访问该条目。 有关详细信息,请参阅菜单模板。

要将页面添加到“main”和“footer”菜单

content/contact.md
     
---
menus:
- main
- footer
title: Contact
---
+++
menus = ['main', 'footer']
title = 'Contact'
+++
{
   "menus": [
      "main",
      "footer"
   ],
   "title": "Contact"
}

在模板中使用 site.Menus.main 和 site.Menus.footer 访问该条目。 有关详细信息,请参阅菜单模板。

上面示例中的配置键是 menus。 menu(单数)配置键是 menus 的别名。

属性

在前置信息中定义菜单项时使用以下属性

identifier
(string)当两个或多个菜单项具有相同的 name,或者使用翻译表本地化 name 时,此属性是必需的。 必须以字母开头,后跟字母、数字或下划线。
name
(string)渲染菜单项时要显示的文本。
params
(map)菜单项的用户定义属性。
parent
(string)父菜单项的 identifier。 如果未定义 identifier,则使用 name。 嵌套菜单中的子条目是必需的。
post
(string)渲染菜单项时要附加的 HTML。
pre
(string)渲染菜单项时要前置的 HTML。
title
(string)渲染的菜单项的 HTML title 属性。
weight
(int)一个非零整数,表示该条目相对于菜单根目录的位置,或者相对于其父级的子条目的位置。 较轻的条目会浮到顶部,而较重的条目会沉到底部。

示例

此前置信息菜单项演示了一些可用的属性

content/products/software.md
     
---
menus:
  main:
    params:
      class: center
    parent: Products
    pre: <i class="fa-solid fa-code"></i>
    weight: 20
title: Software
---
+++
title = 'Software'
[menus]
  [menus.main]
    parent = 'Products'
    pre = '<i class="fa-solid fa-code"></i>'
    weight = 20
    [menus.main.params]
      class = 'center'
+++
{
   "menus": {
      "main": {
         "params": {
            "class": "center"
         },
         "parent": "Products",
         "pre": "\u003ci class=\"fa-solid fa-code\"\u003e\u003c/i\u003e",
         "weight": 20
      }
   },
   "title": "Software"
}

在模板中使用 site.Menus.main 访问该条目。 有关详细信息,请参阅菜单模板。

在站点配置中定义

要定义“main”菜单的条目

hugo.
     
menus:
  main:
  - name: Home
    pageRef: /
    weight: 10
  - name: Products
    pageRef: /products
    weight: 20
  - name: Services
    pageRef: /services
    weight: 30
[menus]
  [[menus.main]]
    name = 'Home'
    pageRef = '/'
    weight = 10
  [[menus.main]]
    name = 'Products'
    pageRef = '/products'
    weight = 20
  [[menus.main]]
    name = 'Services'
    pageRef = '/services'
    weight = 30
{
   "menus": {
      "main": [
         {
            "name": "Home",
            "pageRef": "/",
            "weight": 10
         },
         {
            "name": "Products",
            "pageRef": "/products",
            "weight": 20
         },
         {
            "name": "Services",
            "pageRef": "/services",
            "weight": 30
         }
      ]
   }
}

这将创建一个菜单结构,您可以在模板中使用 site.Menus.main 访问该结构。 有关详细信息,请参阅菜单模板。

要定义“footer”菜单的条目

hugo.
     
menus:
  footer:
  - name: Terms
    pageRef: /terms
    weight: 10
  - name: Privacy
    pageRef: /privacy
    weight: 20
[menus]
  [[menus.footer]]
    name = 'Terms'
    pageRef = '/terms'
    weight = 10
  [[menus.footer]]
    name = 'Privacy'
    pageRef = '/privacy'
    weight = 20
{
   "menus": {
      "footer": [
         {
            "name": "Terms",
            "pageRef": "/terms",
            "weight": 10
         },
         {
            "name": "Privacy",
            "pageRef": "/privacy",
            "weight": 20
         }
      ]
   }
}

这将创建一个菜单结构,您可以在模板中使用 site.Menus.footer 访问该结构。 有关详细信息,请参阅菜单模板。

上面示例中的配置键是 menus。 menu(单数)配置键是 menus 的别名。

属性

在前置信息中定义的条目可用的属性也适用于在站点配置中定义的条目。

在站点配置中定义的每个菜单项都需要两个或多个属性

  • 为内部链接指定 name 和 pageRef
  • 为外部链接指定 name 和 url
pageRef
(string)目标页面的逻辑路径,相对于 content 目录。 省略语言代码和文件扩展名。 内部链接是必需的。
Kind pageRef
home /
page /books/book-1
section /books
taxonomy /tags
term /tags/foo
url
(string)外部链接是必需的。

示例

此嵌套菜单演示了一些可用的属性

hugo.
     
menus:
  main:
  - name: Products
    pageRef: /products
    weight: 10
  - name: Hardware
    pageRef: /products/hardware
    parent: Products
    weight: 1
  - name: Software
    pageRef: /products/software
    parent: Products
    weight: 2
  - name: Services
    pageRef: /services
    weight: 20
  - name: Hugo
    params:
      rel: external
    pre: <i class="fa fa-heart"></i>
    url: https://gohugo.com.cn/
    weight: 30
[menus]
  [[menus.main]]
    name = 'Products'
    pageRef = '/products'
    weight = 10
  [[menus.main]]
    name = 'Hardware'
    pageRef = '/products/hardware'
    parent = 'Products'
    weight = 1
  [[menus.main]]
    name = 'Software'
    pageRef = '/products/software'
    parent = 'Products'
    weight = 2
  [[menus.main]]
    name = 'Services'
    pageRef = '/services'
    weight = 20
  [[menus.main]]
    name = 'Hugo'
    pre = '<i class="fa fa-heart"></i>'
    url = 'https://gohugo.com.cn/'
    weight = 30
    [menus.main.params]
      rel = 'external'
{
   "menus": {
      "main": [
         {
            "name": "Products",
            "pageRef": "/products",
            "weight": 10
         },
         {
            "name": "Hardware",
            "pageRef": "/products/hardware",
            "parent": "Products",
            "weight": 1
         },
         {
            "name": "Software",
            "pageRef": "/products/software",
            "parent": "Products",
            "weight": 2
         },
         {
            "name": "Services",
            "pageRef": "/services",
            "weight": 20
         },
         {
            "name": "Hugo",
            "params": {
               "rel": "external"
            },
            "pre": "\u003ci class=\"fa fa-heart\"\u003e\u003c/i\u003e",
            "url": "https://gohugo.com.cn/",
            "weight": 30
         }
      ]
   }
}

这将创建一个菜单结构,您可以在模板中使用 site.Menus.main 访问该结构。 有关详细信息,请参阅菜单模板。

本地化 多语言。

渲染

请参阅菜单模板。

另请参阅

  • 菜单
  • 原型
  • 内容适配器
  • 前置信息
  • Markdown 属性

本页内容

  • 概述
  • 自动定义
  • 在前置元数据中定义
  • 在站点配置中定义
  • 本地化
  • 渲染
最后更新时间:2024 年 11 月 8 日:修复前置元数据菜单项示例 (159c843fd)
改进此页面
由 Hugo 作者 提供
Hugo Logo
  • 提交问题
  • 获取帮助
  • @GoHugoIO
  • @spf13
  • @bepsays

Netlify badge

 

Hugo 赞助商

您的公司?
 

Hugo 徽标版权归 Steve Francia 2013–2025 所有。

Hugo Gopher 基于 Renée French 的原创作品。

  • 新闻
  • 文档
  • 主题
  • 社区
  • GitHub
  • 关于
  • 安装
  • 入门
  • 快速参考
  • 内容管理
  • 模板
  • 函数
  • 方法
  • 渲染钩子
  • 简码
  • Hugo 模块
  • Hugo 管道
  • CLI
  • 故障排除
  • 开发者工具
  • 托管和部署
  • 贡献
  • 维护