Curvea

Data and Content

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