PHPackages                             georgringer/numbered-pagination - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. georgringer/numbered-pagination

ActiveTypo3-cms-extension[Utility &amp; Helpers](/categories/utility)

georgringer/numbered-pagination
===============================

Improved pagination for TYPO3

2.2.0(7mo ago)291.5M↓23.8%13[8 issues](https://github.com/georgringer/numbered_pagination/issues)[2 PRs](https://github.com/georgringer/numbered_pagination/pulls)13GPL-2.0-or-laterPHPPHP &gt;=7.3

Since Jan 26Pushed 7mo ago2 watchersCompare

[ Source](https://github.com/georgringer/numbered_pagination)[ Packagist](https://packagist.org/packages/georgringer/numbered-pagination)[ Docs](https://github.com/georgringer/numbered_pagination)[ Fund](https://paypal.me/GeorgRinger/10)[ Fund](https://www.amazon.de/hz/wishlist/ls/8F573K08TSDG)[ RSS](/packages/georgringer-numbered-pagination/feed)WikiDiscussions master Synced 2w ago

READMEChangelog (7)Dependencies (1)Versions (10)Used By (13)

TYPO3 Extension `numbered_pagination`
=====================================

[](#typo3-extension-numbered_pagination)

Since TYPO3 10 a new pagination API is shipped which supersedes the pagination widget controller which is removed in version 11.0. [Official documentation](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Pagination/Index.html)

This extension provides an improved pagination which can be used to paginate array items or query results from Extbase. The main advantage is that it reduces the amount of pages shown.

**Example**: Imagine 1000 records and 20 items per page which would lead to 50 links. Using the `NumberedPagination`, you will get something like `< 1 2 ... 21 22 23 24 ... 100 >`

Installation
------------

[](#installation)

Install the extension with `composer require georgringer/numbered-pagination` or by downloading it from [extensions.typo3.org](https://extensions.typo3.org/extension/numbered_pagination/) or the Extension Manager.

Usage
-----

[](#usage)

Just replace the usage of `SimplePagination` with `\GeorgRinger\NumberedPagination\NumberedPagination` and you are done. Set the 2nd argument to the maximum number of links which should be rendered.

```
$itemsPerPage = 10;
$maximumLinks = 15;
$currentPage = $this->request->hasArgument('currentPage') ? (int)$this->request->getArgument('currentPage') : 1;
$paginator = new \TYPO3\CMS\Extbase\Pagination\QueryResultPaginator($allItems, $currentPage, $itemsPerPage);
$pagination = new \GeorgRinger\NumberedPagination\NumberedPagination($paginator, $maximumLinks);
$this->view->assign('pagination', [
    'paginator' => $paginator,
    'pagination' => $pagination,
]);
```

### Templating

[](#templating)

```

```

Copy the pagination partial `EXT:numbered_pagination/Resources/Private/Partials/Pagination.html` to your extension or use it directly by providing the path mapping:

```
# Example for extension "fo"
plugin.tx_fo.view.partialRootPaths.4483 = EXT:numbered_pagination/Resources/Private/Partials/

```

The default paginator looks like this:

- \[1\] 2 3 … next
- 1 \[2\] 3 … next
- prev … 2 \[3\] 4 … next
- prev … 3 \[4\] 5
- prev … 3 4 \[5\]

Here's three how-to's on how to achieve different, still common paginators:

#### Scenario 1

[](#scenario-1)

By uncommenting `li.first` and `li.last` and commenting out `li.prev` and `li.next` it looks like this:

- \[1\] 2 3 … last
- 1 \[2\] 3 … last
- first 2 \[3\] 4 last
- first … 3 \[4\] 5
- first … 3 4 \[5\]

#### Scenario 1 (alternative)

[](#scenario-1-alternative)

By **additionally** changing their text to `1` and `{pagination.lastPageNumber}` it looks like this:

- \[1\] 2 3 … 5
- 1 \[2\] 3 … 5
- 1 2 \[3\] 4 5
- 1 … 3 \[4\] 5
- 1 … 3 4 \[5\]

#### Scenario 3

[](#scenario-3)

By uncommenting `li.first` and `li.last` (and renaming them to `||`) and flipping their position with `li.prev` and `li.next` (and renaming them to ``) it looks like this:

- \[1\] 2 3 … &gt; &gt;|
- 1 \[2\] 3 … &gt; &gt;|
- |&lt; &lt; … 2 \[3\] 4 … &gt; &gt;|
- |&lt; &lt; … 3 \[4\] 5
- |&lt; &lt; … 3 4 \[5\]

#### Remark on 'dots'

[](#remark-on-dots)

In case the two properties `{pagination.hasLessPages}` and `{pagination.hasMorePages}` don't exactly suit the scenario you're trying to set up, think about doing your own calculations. Here's an example:

```

    …

    …

```

###  Health Score

50

—

FairBetter than 95% of packages

Maintenance56

Moderate activity, may be stable

Popularity52

Moderate usage in the ecosystem

Community31

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 62.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~223 days

Recently: every ~353 days

Total

9

Last Release

239d ago

Major Versions

1.0.5 → 2.0.02023-10-05

### Community

Maintainers

![](https://www.gravatar.com/avatar/1d08c176686c8914d32c70d4af388887d738930fdfdf07c7ca9c841ad10ed683?d=identicon)[georgringer](/maintainers/georgringer)

---

Top Contributors

[![georgringer](https://avatars.githubusercontent.com/u/1905663?v=4)](https://github.com/georgringer "georgringer (28 commits)")[![kitzberger](https://avatars.githubusercontent.com/u/1405149?v=4)](https://github.com/kitzberger "kitzberger (4 commits)")[![froemken](https://avatars.githubusercontent.com/u/2532472?v=4)](https://github.com/froemken "froemken (4 commits)")[![sabbelasichon](https://avatars.githubusercontent.com/u/13050560?v=4)](https://github.com/sabbelasichon "sabbelasichon (2 commits)")[![kaystrobach](https://avatars.githubusercontent.com/u/1185776?v=4)](https://github.com/kaystrobach "kaystrobach (2 commits)")[![featdd](https://avatars.githubusercontent.com/u/5744734?v=4)](https://github.com/featdd "featdd (1 commits)")[![linawolf](https://avatars.githubusercontent.com/u/48202465?v=4)](https://github.com/linawolf "linawolf (1 commits)")[![MatthiasPeltzer](https://avatars.githubusercontent.com/u/7772293?v=4)](https://github.com/MatthiasPeltzer "MatthiasPeltzer (1 commits)")[![naturefund-falk](https://avatars.githubusercontent.com/u/12998317?v=4)](https://github.com/naturefund-falk "naturefund-falk (1 commits)")[![chefthisz](https://avatars.githubusercontent.com/u/129257684?v=4)](https://github.com/chefthisz "chefthisz (1 commits)")

---

Tags

paginationtypo3

### Embed Badge

![Health badge](/badges/georgringer-numbered-pagination/health.svg)

```
[![Health](https://phpackages.com/badges/georgringer-numbered-pagination/health.svg)](https://phpackages.com/packages/georgringer-numbered-pagination)
```

###  Alternatives

[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

103574.3k69](/packages/friendsoftypo3-content-blocks)[typo3/cms-styleguide

TYPO3 extension to showcase TYPO3 Backend capabilities

105768.9k39](/packages/typo3-cms-styleguide)[wazum/sluggi

TYPO3 extension for URL slug management with inline editing, auto-sync, locking, access control, and redirects

40543.5k](/packages/wazum-sluggi)[clickstorm/cs-seo

\[clickstorm\] SEO - Extension for TYPO3. Enables important onpage features for search engine optimization (SEO). Expands the page settings and any desired records for example with a preview for Google search results (SERP) Structured Data (JSON-LD) and a Focus Keyword. Restrictive hreflang and canonical tags. Modules for metadata of records and alternative texts of images. Further features are shown in the extension manual.

37542.0k1](/packages/clickstorm-cs-seo)[jweiland/events2

Events 2 - Create single and recurring events

2168.1k3](/packages/jweiland-events2)[in2code/lux

Living User eXperience - LUX - the Marketing Automation tool for TYPO3.

2160.9k1](/packages/in2code-lux)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
