Pagination
Curvea supports build-time pagination with @paginate.
Pagination is used on page files and works with arrays loaded through @load.
Basic usage
@page
@load posts
@paginate posts by 10
@for post in pagination.items
<article>
<h2>{{ post.title }}</h2>
</article>
@end
Syntax
@paginate <alias> by <integer>
Example:
@paginate posts by 6
Source requirements
The pagination source must:
- exist in loaded data
- resolve to an array
- use a positive integer per-page value
Generated pagination object
Pagination data is available as:
pagination
Fields include:
pagination.items
pagination.currentPage
pagination.totalPages
pagination.perPage
pagination.totalItems
pagination.offset
pagination.hasNext
pagination.hasPrevious
pagination.nextUrl
pagination.previousUrl
pagination.pages
Pages array
pagination.pages contains objects:
number
url
current
Example:
@for pageItem in pagination.pages
<a href="{{ pageItem.url }}">{{ pageItem.number }}</a>
@end
Route output
The first page uses the base route:
/blog
Additional pages use:
/blog/page/2
/blog/page/3
Dynamic route limitation
@paginate is not supported on dynamic page files.
This is invalid:
src/pages/blog/[slug].csc
with:
@paginate posts by 10