Hugo框架中文文档 Pagination 分页模板
Contents
HUgo提供的分页机制在与where
函数以及函数中类似SQL的操作符: first
, last
, 和 after
结合使用时, Hugo的真正强大力量会熠熠生辉发出耀眼光芒:)。 同时也可以按您习惯的HUgo方式对内容排序.
配置分页
分页可以在站点配置文件中配置。
Paginate
- default =
10
默认值, 设置以后可以在模板内重载这个值. PaginatePath
- 分页路径 默认值 =
page
允许您设置分页页面的不同路径.
设置Paginate
为正数会将主页、区块和分类页面分成包含设置的数值大小的页面块。但是请注意,为区块页、分类标签页和主页的分页页面的生成是lazy懒加载的–页面不会被创建如果没有被 .Paginator
(见下面说明)引用.
PaginatePath
用于在页面分页器中定制URL
(默认设置生成的URL形如 /page/1/
)
展示分页页面列表
有两种配置和使用.Paginator
的方式:
- 最简单的方式是在模板中调用
.Paginator.Pages
, 这里面包含 那个页面 所属的页面. - 使用可用的模板函数和排序选项选择另外的页面集合, 然后传递选择的slice给
.Paginate
使用. 比如.
{{ range (.Paginate ( first 50 .Pages.ByTitle )).Pages }}
或者{{ range (.Paginate .RegularPagesRecursive).Pages }}
.
对于指定的 Page, 它是上面两种方式之一. .Paginator
是静态的、一经创建无法改变.
如果在同一页面调用.Paginator
or .Paginate
多次, 必须保证所有的调用是相同的. 在生成页面时一旦调用.Paginator
或者 .Paginate
, 结果会被缓存, 任何后续的相似调用会重用缓存结果. 这意味着任何不与第一个调用匹配的后续调用不会得到想要的结果.
(谨记函数参数会提前评估,所以类似$paginator := cond x .Paginator (.Paginate .RegularPagesRecursive)
这样的调用是您不应该使用的例子. 应该使用if
/else
来保证仅仅调用一次评估.
全局页面分页数值设定 (Paginate
) 可以被提供的最后一个正数参数重载. 下面的例子会生成每个页面五个条目:
{{ range (.Paginator 5).Pages }}
{{ $paginator := .Paginate (where .Pages "Type" "posts") 5 }}
也可以将GroupBy函数与分页结合使用:
|
|
构建分页导航
.Paginator
包含构建分页界面的足够信息.
最简单的方式是在您页面内包含hugo内置的模板(Bootstrap
兼容的模式):
|
|
下面例子展示了如何在使用前创建.Paginator
:
|
|
如果没有where
过滤, 上面例子更简单:
|
|
如果想构建定制的分页导航, 您可以使用 .Paginator
对象来达成,.Paginator
对象包含下面的属性:
PageNumber
- 当前页在页面序列中的数值
URL
- 当前页的相对URL
Pages
- 分页器所管理的页面
NumberOfElements
- 当前页的元素数量
HasPrev
- 当前页是否有前一页
Prev
- 当前页的前一页
HasNext
- 当前页是否具有下一页
Next
- 当前页的下一页
First
- 分页的第一页
Last
- 分页的最后一页
Pagers
- 分页的list用来构建分页的菜单
PageSize
- 每页的元素数量
TotalPages
- 分页器中所有页数量
TotalNumberOfElements
- 分页器中所有页上的元素数目
补充信息
所有分页器的页面构建形式如下(BLANK
意味着没有值):
|
|