PageRef

此方法的使用情境極為少見。

幾乎在所有情境下,您應該使用 URL 方法。

說明

如果在定義選單項目時於網站設定中指定了 pageRef 屬性,Hugo 在渲染該項目時會嘗試尋找相符的頁面。

如果找到相符的頁面:

  • URL 方法將傳回該頁面的相對永久連結(relative permalink)
  • Page 方法將傳回對應的 Page 物件
  • HasMenuCurrentIsMenuCurrent 方法將傳回預期的值

如果未找到相符的頁面:

範例

以下為一個假設範例。

假設這是您的內容結構:

content/
├── products.md
└── _index.md

以及這個選單定義:

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

使用以下範本代碼:

layouts/partials/menu.html
<ul>
  {{ range .Site.Menus.main }}
    <li><a href="{{ .URL }}">{{ .Name }}</a></li>
  {{ end }}
</ul>

Hugo 會渲染以下的 HTML:

<ul>
  <li><a href="/products/">Products</a></li>
  <li><a href="">Services</a></li>
</ul>

在上述範例中,第二個 <a> 元素的 href 屬性為空,因為 Hugo 無法找到 “services” 頁面。

若使用以下範本代碼:

layouts/partials/menu.html
<ul>
  {{ range .Site.Menus.main }}
    <li><a href="{{ or .URL .PageRef }}">{{ .Name }}</a></li>
  {{ end }}
</ul>

Hugo 將渲染以下的 HTML:

<ul>
  <li><a href="/products/">Products</a></li>
  <li><a href="/services">Services</a></li>
</ul>

在上述範例中,Hugo 使用站點設定中定義的 pageRef 屬性作為第二個 <a> 元素的 href 屬性,因為範本代碼中將 PageRef 方法設為回退選項。