Menus

Menus 方法在 Site 物件中回傳一個菜單集合,每個菜單包含一個或多個項目,可以是扁平結構或嵌套結構。每個項目指向網站中的一個頁面或外部資源。

一個網站可以有多個菜單,例如主菜單和頁腳菜單:

hugo.
     
menus:
  footer:
  - name: 法律
    pageRef: /legal
    weight: 10
  - name: 隱私
    pageRef: /privacy
    weight: 20
  main:
  - name: 首頁
    pageRef: /
    weight: 10
  - name: 書籍
    pageRef: /books
    weight: 20
  - name: 電影
    pageRef: /films
    weight: 30
[menus]
  [[menus.footer]]
    name = '法律'
    pageRef = '/legal'
    weight = 10
  [[menus.footer]]
    name = '隱私'
    pageRef = '/privacy'
    weight = 20
  [[menus.main]]
    name = '首頁'
    pageRef = '/'
    weight = 10
  [[menus.main]]
    name = '書籍'
    pageRef = '/books'
    weight = 20
  [[menus.main]]
    name = '電影'
    pageRef = '/films'
    weight = 30
{
   "menus": {
      "footer": [
         {
            "name": "法律",
            "pageRef": "/legal",
            "weight": 10
         },
         {
            "name": "隱私",
            "pageRef": "/privacy",
            "weight": 20
         }
      ],
      "main": [
         {
            "name": "首頁",
            "pageRef": "/",
            "weight": 10
         },
         {
            "name": "書籍",
            "pageRef": "/books",
            "weight": 20
         },
         {
            "name": "電影",
            "pageRef": "/films",
            "weight": 30
         }
      ]
   }
}

此範本渲染主菜單:

{{ with site.Menus.main }}
  <nav class="menu">
    {{ range . }}
      {{ if $.IsMenuCurrent .Menu . }}
        <a class="active" aria-current="page" href="{{ .URL }}">{{ .Name }}</a>
      {{ else }}
        <a href="{{ .URL }}">{{ .Name }}</a>
      {{ end }}
    {{ end }}
  </nav>
{{ end }}

當查看首頁時,結果為:

<nav class="menu">
  <a class="active" aria-current="page" href="/">首頁</a>
  <a href="/books/">書籍</a>
  <a href="/films/">電影</a>
</nav>

當查看「書籍」頁面時,結果為:

<nav class="menu">
  <a href="/">首頁</a>
  <a class="active" aria-current="page" href="/books/">書籍</a>
  <a href="/films/">電影</a>
</nav>

通常您會使用部分模板來渲染菜單。由於每個頁面的活動菜單項目不同,請使用 partial 函數來調用模板。不要使用 partialCached 函數。

上述範例較為簡單。請參見菜單模板部分了解更多信息。