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(3mo ago)21130.0k↓53.9%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 3mo 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 2w 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

53

—

FairBetter than 96% of packages

Maintenance76

Regular maintenance activity

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

90d 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

103574.3k69](/packages/friendsoftypo3-content-blocks)[wazum/sluggi

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

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

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

169.5M270](/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.3M359](/packages/typo3-cms-lowlevel)[typo3/cms-redirects

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

167.6M84](/packages/typo3-cms-redirects)[typo3/cms-form

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

147.8M288](/packages/typo3-cms-form)

PHPackages © 2026

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