HUGO 中文文档

  • 新闻
  • 文档
  • 主题
  • 社区
  • GitHub
gohugoio Star
  • 关于
    • 本节内容
    • 简介
    • 特性
    • 隐私
    • 安全
    • 许可证
  • 安装
    • 本节内容
    • macOS
    • Linux
    • Windows
    • BSD
  • 快速上手
    • 本节内容
    • 快速入门
    • 基本用法
    • 目录结构
    • 配置
    • 配置标记
    • 术语表
    • 配置构建
    • 外部学习资源
  • 快速参考
    • 本节内容
    • 表情符号
    • 函数
    • 方法
    • 页面集合
  • 内容管理
    • 本节内容
    • 组织
    • 页面包
    • 内容格式
    • Front matter (前置 matter)
    • 构建选项
    • 页面资源
    • 图片处理
    • 短代码
    • 相关内容
    • 章节
    • 内容类型
    • 原型
    • 分类法
    • 摘要
    • 链接和交叉引用
    • URL 管理
    • 菜单
    • 评论
    • 多语言
    • Markdown 属性
    • 语法高亮
    • 图表
    • 数学公式
    • 数据源
    • 内容适配器
  • 模板
    • 本节内容
    • 简介
    • 模板类型
    • 查找顺序
    • 基模板
    • 首页模板
    • 单个模板
    • 章节模板
    • 分类模板
    • 术语模板
    • 局部模板
    • 内容视图模板
    • 短代码模板
    • 站点地图模板
    • RSS 模板
    • 404 模板
    • robots.txt 模板
    • 菜单
    • 分页
    • 内嵌模板
    • 自定义输出格式
  • 函数
    • 本节内容
    • css
    • fmt
    • go 模板
    • hugo
    • js
    • lang
    • openapi3
    • os
    • urls
    • 全局
    • 加密
    • 反射
    • 变形
    • 变换
    • 哈希
    • 图像
    • 图表函数
    • 字符串
    • 安全函数
    • 局部模板函数
    • 数学
    • 数据
    • 时间
    • 模板
    • 比较
    • 类型转换
    • 编码
    • 调试
    • 资源
    • 路径
    • 集合
  • 方法
    • 本节内容
    • Duration
    • Menu
    • Page
    • Pager
    • Resource
    • Shortcode
    • Site
    • Taxonomy
    • Time
    • 菜单项
    • 页面
  • 渲染钩子
    • 本节内容
    • 简介
    • 块引用
    • 代码块
    • 标题
    • Images
    • 链接
    • Passthrough
    • 表格
  • Hugo 模块
    • 本节内容
    • 配置 Hugo 模块
    • 使用 Hugo 模块
    • 主题组件
  • Hugo 管道
    • 本节内容
    • 简介
    • 将 Sass 编译为 CSS
    • PostCSS
    • PostProcess
    • JavaScript 构建
    • 资源压缩
    • 连接资产
    • 指纹和 SRI 哈希
    • 从字符串创建资源
    • 从模板创建资源
  • 命令行界面
  • 故障排除
    • 本节内容
    • Audit
    • 日志记录
    • 检查
    • 弃用
    • 性能
    • FAQs
  • 开发者工具
    • 本节内容
    • 编辑器插件
    • 前端
    • Search
    • 迁移
    • 其他项目
  • 托管和部署
    • 本节内容
    • Hugo 部署
    • 使用 Rclone 部署
    • 使用 Rsync 部署
    • 在 21YunBox 上托管
    • 在 AWS Amplify 上托管
    • 在 Cloudflare Pages 上托管
    • 在 Firebase 上托管
    • 在 GitLab Pages 上托管
    • 在 Netlify 上托管
    • 在 Render 上托管
    • 托管在 Azure 静态 Web 应用上
    • 托管在 GitHub Pages 上
    • 托管在 KeyCDN 上
  • 贡献
    • 本节内容
    • 开发
    • 文档
    • 主题
  • 维护
CONTENT MANAGEMENT

菜单

通过定义条目、本地化每个条目以及渲染结果数据结构来创建菜单。

概述

创建网站菜单的方法:

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

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

定义菜单项有三种方法:

  1. 自动定义
  2. 在前置 matter 中定义
  3. 在站点配置中定义

虽然在定义菜单时可以组合使用这些方法,但如果在整个站点中使用一种方法,菜单将更容易理解和维护。

自动定义

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

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

这将创建一个菜单结构,您可以在模板中使用 site.Menus.main 访问它。详情请参见 菜单模板 。

在前置 matter 中定义

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

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

在模板中使用 site.Menus.main 访问该条目。详情请参见 菜单模板 。

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

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

在模板中使用 site.Menus.main 和 site.Menus.footer 访问该条目。详情请参见 菜单模板 。

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

属性

在前置 matter 中定义菜单项时,可以使用以下属性:

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) 一个非零整数,指示条目相对于菜单根目录的位置,或者对于子条目相对于其父项的位置。较轻的条目浮在顶部,较重的条目沉到底部。

示例

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

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

在模板中使用 site.Menus.main 访问该条目。详情请参见 菜单模板 。

在站点配置中定义

要为“main”菜单定义条目:

hugo.
     
menus:
  main:
  - name: 首页
    pageRef: /
    weight: 10
  - name: 产品
    pageRef: /products
    weight: 20
  - name: 服务
    pageRef: /services
    weight: 30
[menus]
  [[menus.main]]
    name = '首页'
    pageRef = '/'
    weight = 10
  [[menus.main]]
    name = '产品'
    pageRef = '/products'
    weight = 20
  [[menus.main]]
    name = '服务'
    pageRef = '/services'
    weight = 30
{
   "menus": {
      "main": [
         {
            "name": "首页",
            "pageRef": "/",
            "weight": 10
         },
         {
            "name": "产品",
            "pageRef": "/products",
            "weight": 20
         },
         {
            "name": "服务",
            "pageRef": "/services",
            "weight": 30
         }
      ]
   }
}

这将创建一个菜单结构,您可以在模板中使用 site.Menus.main 访问它。详情请参见 菜单模板 。

要为“footer”菜单定义条目:

hugo.
     
menus:
  footer:
  - name: 条款
    pageRef: /terms
    weight: 10
  - name: 隐私
    pageRef: /privacy
    weight: 20
[menus]
  [[menus.footer]]
    name = '条款'
    pageRef = '/terms'
    weight = 10
  [[menus.footer]]
    name = '隐私'
    pageRef = '/privacy'
    weight = 20
{
   "menus": {
      "footer": [
         {
            "name": "条款",
            "pageRef": "/terms",
            "weight": 10
         },
         {
            "name": "隐私",
            "pageRef": "/privacy",
            "weight": 20
         }
      ]
   }
}

这将创建一个菜单结构,您可以在模板中使用 site.Menus.footer 访问它。详情请参见 菜单模板 。

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

属性

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

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

  • 为内部链接指定 name 和 pageRef
  • 为外部链接指定 name 和 url
pageRef
(string) 目标页面的逻辑路径,相对于 content 目录。省略语言代码和文件扩展名。内部 链接需要此属性。
种类 pageRef
首页 /
页面 /books/book-1
章节 /books
分类 /tags
术语 /tags/foo
url
(string) 外部链接 需要此属性。

示例

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

hugo.
     
menus:
  main:
  - name: 产品
    pageRef: /products
    weight: 10
  - name: 硬件
    pageRef: /products/hardware
    parent: 产品
    weight: 1
  - name: 软件
    pageRef: /products/software
    parent: 产品
    weight: 2
  - name: 服务
    pageRef: /services
    weight: 20
  - name: Hugo
    params:
      rel: external
    pre: <i class="fa fa-heart"></i>
    url: https://gohugo.io/
    weight: 30
[menus]
  [[menus.main]]
    name = '产品'
    pageRef = '/products'
    weight = 10
  [[menus.main]]
    name = '硬件'
    pageRef = '/products/hardware'
    parent = '产品'
    weight = 1
  [[menus.main]]
    name = '软件'
    pageRef = '/products/software'
    parent = '产品'
    weight = 2
  [[menus.main]]
    name = '服务'
    pageRef = '/services'
    weight = 20
  [[menus.main]]
    name = 'Hugo'
    pre = '<i class="fa fa-heart"></i>'
    url = 'https://gohugo.io/'
    weight = 30
    [menus.main.params]
      rel = 'external'
{
   "menus": {
      "main": [
         {
            "name": "产品",
            "pageRef": "/products",
            "weight": 10
         },
         {
            "name": "硬件",
            "pageRef": "/products/hardware",
            "parent": "产品",
            "weight": 1
         },
         {
            "name": "软件",
            "pageRef": "/products/software",
            "parent": "产品",
            "weight": 2
         },
         {
            "name": "服务",
            "pageRef": "/services",
            "weight": 20
         },
         {
            "name": "Hugo",
            "params": {
               "rel": "external"
            },
            "pre": "\u003ci class=\"fa fa-heart\"\u003e\u003c/i\u003e",
            "url": "https://gohugo.io/",
            "weight": 30
         }
      ]
   }
}

这将创建一个菜单结构,您可以在模板中使用 site.Menus.main 访问它。详情请参见 菜单模板 。

本地化

Hugo 提供两种方法来本地化您的菜单项。参见 多语言 。

渲染

参见 菜单模板 。

See also

  • 菜单
  • Front matter (前置 matter)
  • 数学公式
  • Markdown 属性
  • Passthrough

On this page

  • 概述
  • 自动定义
  • 在前置 matter 中定义
  • 在站点配置中定义
  • 本地化
  • 渲染
Last updated: January 10, 2025: 添加 gtm 谷歌代码管理 (6220bf5)
Improve this page
By the Hugo Authors
Hugo Logo
  • File an Issue
  • Get Help
  • @GoHugoIO
  • @spf13
  • @bepsays
 

Hugo Sponsors

Your Company?
 

The Hugo logos are copyright © Steve Francia 2013–2025.

The Hugo Gopher is based on an original work by Renée French.

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