PHPackages                             smic/dynamic-routing-pages - 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. smic/dynamic-routing-pages

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

smic/dynamic-routing-pages
==========================

Generates "limitToPages" configuration for your enhancers on the fly so you don't need to hardcode it.

2.1.0(1mo ago)21127.1k↓53.1%10[7 issues](https://github.com/smichaelsen/typo3-dynamic-routing-pages/issues)[2 PRs](https://github.com/smichaelsen/typo3-dynamic-routing-pages/pulls)GPL-2.0-or-laterPHP

Since Mar 9Pushed 1mo ago3 watchersCompare

[ Source](https://github.com/smichaelsen/typo3-dynamic-routing-pages)[ Packagist](https://packagist.org/packages/smic/dynamic-routing-pages)[ RSS](/packages/smic-dynamic-routing-pages/feed)WikiDiscussions main Synced 2d ago

READMEChangelog (8)Dependencies (4)Versions (18)Used By (0)

Dynamic Routing Pages
=====================

[](#dynamic-routing-pages)

Instead of hardcoding the `limitToPages` configuration for your route enhancers this package can automatically detect the necessary pages for you and generate the configuration on the fly.

Problem
-------

[](#problem)

Imagine the following typical routing configuration for the news plugin.

```
routeEnhancers:
  NewsPages:
    type: Extbase
    # add every page-ID that contains a News Plugin
    limitToPages:
      - 23
      - 42
      - 123
      - 242
    extension: News
    plugin: Pi1
    routes:
      - { routePath: '/{myNewsTitle}', _controller: 'News::detail', _arguments: {'myNewsTitle': 'news'} }
      - { routePath: '/{myPagination}', _controller: 'News::list', _arguments: {'myPagination': '@widget_0/currentPage'} }
      - { routePath: '/{year}/{month}', _controller: 'News::list', _arguments: {'year' : 'overwriteDemand/year', 'month' : 'overwriteDemand/month'} }
    defaultController: 'News::list'
    # ...

```

Hardcoding the page ids for your plugin routes has the major drawback that you have to adapt the configuration as soon as someone creates a new page with a plugin (which might happen in a CMS). With the route enhancers configuration not available in the Site module this means you have to ship an updated configuration file every time an editor creates a plugin page.

Solution
--------

[](#solution)

```
routeEnhancers:
  NewsPages:
    type: Extbase
    dynamicPages:
        withPlugin: news_pi1
    extension: News
    plugin: Pi1
    routes:
      - { routePath: '/{myNewsTitle}', _controller: 'News::detail', _arguments: {'myNewsTitle': 'news'} }
      - { routePath: '/{myPagination}', _controller: 'News::list', _arguments: {'myPagination': '@widget_0/currentPage'} }
      - { routePath: '/{year}/{month}', _controller: 'News::list', _arguments: {'year' : 'overwriteDemand/year', 'month' : 'overwriteDemand/month'} }
    defaultController: 'News::list'
    # ...

```

Notice the `dynamicPages` configuration. This package will populate the `limitToPages` with matching pages.

Reference
---------

[](#reference)

`dynamicPages` has three possible properties.

### `withPlugin`

[](#withplugin)

Can be a string or an array of `tt_content.list_type` values. Will find all pages that contain at least one of the given plugins.

### `containsModule`

[](#containsmodule)

Can be a string or an array of `pages.module` values. Will find all pages that have "Contains Plugin" set to one of the given values.

### `withSwitchableControllerAction`

[](#withswitchablecontrolleraction)

Can be a string or an array of `switchableControllerActions` values. Will find all pages that contain plugins with the given action configured.

### `withCType`

[](#withctype)

Can be a string or an array of `withCType` values. Will find all pages that contain content element with given CType.

### `withDoktypes`

[](#withdoktypes)

Can be an integer or an array of `withDoktypes` values. Will find all pages with given doktype.

###  Health Score

56

—

FairBetter than 97% of packages

Maintenance85

Actively maintained with recent releases

Popularity43

Moderate usage in the ecosystem

Community19

Small or concentrated contributor base

Maturity62

Established project with proven stability

 Bus Factor1

Top contributor holds 72.4% 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 ~271 days

Recently: every ~313 days

Total

8

Last Release

45d ago

Major Versions

1.2.0 → 2.0.02025-09-04

### Community

Maintainers

![](https://www.gravatar.com/avatar/886face3e57e668db2bf95d62325f423baf7e9d8949a9e4c84d3a0e6c3891920?d=identicon)[smichaelsen](/maintainers/smichaelsen)

---

Top Contributors

[![smichaelsen](https://avatars.githubusercontent.com/u/912435?v=4)](https://github.com/smichaelsen "smichaelsen (21 commits)")[![amirarends](https://avatars.githubusercontent.com/u/48568142?v=4)](https://github.com/amirarends "amirarends (3 commits)")[![kitzberger](https://avatars.githubusercontent.com/u/1405149?v=4)](https://github.com/kitzberger "kitzberger (1 commits)")[![saitho](https://avatars.githubusercontent.com/u/7293310?v=4)](https://github.com/saitho "saitho (1 commits)")[![schliesser](https://avatars.githubusercontent.com/u/11655823?v=4)](https://github.com/schliesser "schliesser (1 commits)")[![kszymukowicz](https://avatars.githubusercontent.com/u/1453553?v=4)](https://github.com/kszymukowicz "kszymukowicz (1 commits)")[![ftrojahn](https://avatars.githubusercontent.com/u/6184818?v=4)](https://github.com/ftrojahn "ftrojahn (1 commits)")

###  Code Quality

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/smic-dynamic-routing-pages/health.svg)

```
[![Health](https://phpackages.com/badges/smic-dynamic-routing-pages/health.svg)](https://phpackages.com/packages/smic-dynamic-routing-pages)
```

###  Alternatives

[friendsoftypo3/content-blocks

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

103519.9k53](/packages/friendsoftypo3-content-blocks)[wazum/sluggi

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

40529.5k](/packages/wazum-sluggi)[typo3/cms-scheduler

TYPO3 CMS Scheduler - Schedule tasks to run once or periodically at a specific time.

169.3M231](/packages/typo3-cms-scheduler)[typo3/cms-lowlevel

TYPO3 CMS Lowlevel - Technical analysis of the system. This includes raw database search, checking relations, counting pages and records etc.

178.2M316](/packages/typo3-cms-lowlevel)[typo3/cms-redirects

TYPO3 CMS Redirects - Create manual redirects, list existing redirects and automatically createredirects on slug changes.

167.4M80](/packages/typo3-cms-redirects)[typo3/cms-form

TYPO3 CMS Form - Flexible TYPO3 frontend form framework that comes with a backend editor interface.

147.6M265](/packages/typo3-cms-form)

PHPackages © 2026

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