# $pagination

The `$pagination` object divides a collection of pages, files etc. into discrete pages consisting of the number of defined items. The pagination object can then be used to navigate between these pages, create a navigation etc.

****

- Full class name: `Kirby\Cms\Pagination`
- Alias: `Pagination`
- Source: <https://github.com/getkirby/kirby/tree/5.5.3/src/Cms/Pagination.php#L23>

****

### $pagination

- [new Pagination()](https://getkirby.com/docs/reference/objects/cms/pagination/__construct.md)
- [$pagination->clone()](https://getkirby.com/docs/reference/objects/cms/pagination/clone.md)
- [$pagination->end()](https://getkirby.com/docs/reference/objects/cms/pagination/end.md)
- [$pagination->firstPage()](https://getkirby.com/docs/reference/objects/cms/pagination/first-page.md)
- [$pagination->firstPageUrl()](https://getkirby.com/docs/reference/objects/cms/pagination/first-page-url.md)
- [Pagination::for()](https://getkirby.com/docs/reference/objects/cms/pagination/for.md)
- [$pagination->hasNextPage()](https://getkirby.com/docs/reference/objects/cms/pagination/has-next-page.md)
- [$pagination->hasPage()](https://getkirby.com/docs/reference/objects/cms/pagination/has-page.md)
- [$pagination->hasPages()](https://getkirby.com/docs/reference/objects/cms/pagination/has-pages.md)
- [$pagination->hasPrevPage()](https://getkirby.com/docs/reference/objects/cms/pagination/has-prev-page.md)
- [$pagination->isFirstPage()](https://getkirby.com/docs/reference/objects/cms/pagination/is-first-page.md)
- [$pagination->isLastPage()](https://getkirby.com/docs/reference/objects/cms/pagination/is-last-page.md)
- [$pagination->lastPage()](https://getkirby.com/docs/reference/objects/cms/pagination/last-page.md)
- [$pagination->lastPageUrl()](https://getkirby.com/docs/reference/objects/cms/pagination/last-page-url.md)
- [$pagination->limit()](https://getkirby.com/docs/reference/objects/cms/pagination/limit.md)
- [$pagination->nextPage()](https://getkirby.com/docs/reference/objects/cms/pagination/next-page.md)
- [$pagination->nextPageUrl()](https://getkirby.com/docs/reference/objects/cms/pagination/next-page-url.md)
- [$pagination->offset()](https://getkirby.com/docs/reference/objects/cms/pagination/offset.md)
- [$pagination->page()](https://getkirby.com/docs/reference/objects/cms/pagination/page.md)
- [$pagination->pageUrl()](https://getkirby.com/docs/reference/objects/cms/pagination/page-url.md)
- [$pagination->pages()](https://getkirby.com/docs/reference/objects/cms/pagination/pages.md)
- [$pagination->prevPage()](https://getkirby.com/docs/reference/objects/cms/pagination/prev-page.md)
- [$pagination->prevPageUrl()](https://getkirby.com/docs/reference/objects/cms/pagination/prev-page-url.md)
- [$pagination->range()](https://getkirby.com/docs/reference/objects/cms/pagination/range.md)
- [$pagination->rangeEnd()](https://getkirby.com/docs/reference/objects/cms/pagination/range-end.md)
- [$pagination->rangeStart()](https://getkirby.com/docs/reference/objects/cms/pagination/range-start.md)
- [$pagination->start()](https://getkirby.com/docs/reference/objects/cms/pagination/start.md)
- [$pagination->toArray()](https://getkirby.com/docs/reference/objects/cms/pagination/to-array.md)
- [$pagination->total()](https://getkirby.com/docs/reference/objects/cms/pagination/total.md)

## How to create a `$pagination` object

To create a `$pagination` object, you have to paginate a collection of pages and then call the `pagination()` method:

```php
$articles   = page('blog')->children()->listed()->paginate(5);
$pagination = $articles->pagination();
```
This will give us  5 articles per pagination page.

## Examples

With the object in place, we can now use the methods to create our pagination navigation

```php
<?php if ($pagination->hasPages()): ?>
<nav class="pagination">

  <?php if ($pagination->hasNextPage()): ?>
  <a class="next" href="<?= $pagination->nextPageURL() ?>">older posts</a>
  <?php endif ?>

  <?php if ($pagination->hasPrevPage()): ?>
  <a class="prev" href="<?= $pagination->prevPageURL() ?>">newer posts</a>
  <?php endif ?>

</nav>
<?php endif ?>
```

(screencast: https://www.youtube.com/watch?v=p1JhCpSRvlc title: Pagination text: When a list of pages grows longer and longer you need to paginate it.)