PageRef
此方法的使用情境極為少見。
幾乎在所有情境下,您應該使用 URL
方法。
說明
如果在定義選單項目時於網站設定中指定了 pageRef
屬性,Hugo 在渲染該項目時會嘗試尋找相符的頁面。
如果找到相符的頁面:
URL
方法將傳回該頁面的相對永久連結(relative permalink)Page
方法將傳回對應的Page
物件HasMenuCurrent
和IsMenuCurrent
方法將傳回預期的值
如果未找到相符的頁面:
URL
方法將傳回該項目的url
屬性(若已設定),否則為空字串Page
方法將傳回 nilHasMenuCurrent
和IsMenuCurrent
方法將傳回false
範例
以下為一個假設範例。
假設這是您的內容結構:
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
}
]
}
}
使用以下範本代碼:
Hugo 會渲染以下的 HTML:
<ul>
<li><a href="/products/">Products</a></li>
<li><a href="">Services</a></li>
</ul>
在上述範例中,第二個 <a>
元素的 href
屬性為空,因為 Hugo 無法找到 “services” 頁面。
若使用以下範本代碼:
Hugo 將渲染以下的 HTML:
<ul>
<li><a href="/products/">Products</a></li>
<li><a href="/services">Services</a></li>
</ul>
在上述範例中,Hugo 使用站點設定中定義的 pageRef
屬性作為第二個 <a>
元素的 href
屬性,因為範本代碼中將 PageRef
方法設為回退選項。