Prev
Syntax
PAGES.Prev PAGE
Returns
hugolib.pageStates
Prev
方法和 Next
方法在 Pages
对象上的行为可能与您期望的相反。
假设有以下的内容结构,并且页面集合按权重升序排序:
content/
├── pages/
│ ├── _index.md
│ ├── page-1.md <-- front matter: weight = 10
│ ├── page-2.md <-- front matter: weight = 20
│ └── page-3.md <-- front matter: weight = 30
└── _index.md
当您访问 page-2 时:
Prev
方法指向 page-3Next
方法指向 page-1
{{ $pages := where .Site.RegularPages.ByWeight "Section" "pages" }}
{{ with $pages.Next . }}
<a href="{{ .RelPermalink }}">上一页</a>
{{ end }}
{{ with $pages.Prev . }}
<a href="{{ .RelPermalink }}">下一页</a>
{{ end }}
与 Page 方法对比
在 Pages
对象上,Next
和 Prev
方法比在 Page
对象上的 Next
和 Prev
方法更灵活。
页面集合 | 自定义排序顺序 | |
---|---|---|
PAGES.Next 和 PAGES.Prev |
本地定义 | ✔️ |
PAGE.Next 和 PAGE.Prev |
全局定义 | ❌ |
- 本地定义
- 每次调用
PAGES.Next
和PAGES.Prev
时重新构建页面集合。在局部集合中,页面之间的导航与全局集合无关,相对于当前页面的位置。
在本地集合中,导航排序顺序与集合排序顺序相同。
- 全局定义
- 在列表页面上一次性构建页面集合。在全局集合中,页面之间的导航与当前页面在全局集合内的位置相关。
在全局集合中,导航排序顺序是固定的,使用 Hugo 的默认排序顺序。按优先级排序如下:
例如,使用按标题排序的全局集合,导航排序顺序将使用 Hugo 的默认排序顺序。这可能不符合您的期望和需求。因此,一般而言,在 Pages
对象上使用 Next
和 Prev
方法是更好的选择。