PageRef
返回给定菜单条目的 `pageRef` 属性。
说明
如果在项目配置中定义菜单条目时指定了 pageRef 属性,Hugo 在渲染该条目时会查找匹配的页面。
如果找到匹配的页面:
URL方法返回该页面的相对永久链接Page方法返回对应的Page对象Page对象上的HasMenuCurrent和IsMenuCurrent方法返回预期值
如果没有找到匹配的页面:
URL方法返回该条目的url属性(如果已设置),否则返回空字符串Page方法返回nilPage对象上的HasMenuCurrent和IsMenuCurrent方法返回false
示例
这个示例是刻意构造的。
请看下面的内容结构:
content/
├── products.md
└── _index.md以及下面的菜单定义:
[[menus.main]]
name = 'Products'
pageRef = '/products'
weight = 10
[[menus.main]]
name = 'Services'
pageRef = '/services'
weight = 20使用下面的模板代码:
<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>注意上面第二个 anchor 元素的 href 属性为空,因为 Hugo 找不到 services 页面。
使用下面的模板代码:
<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 把第二个 anchor 元素的 href 属性填成了项目配置里定义的 pageRef 属性,因为模板代码回退到了 PageRef 方法。