Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/smichaelsen/typo3-dynamic-routing-pages
https://github.com/smichaelsen/typo3-dynamic-routing-pages
Last synced: 6 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/smichaelsen/typo3-dynamic-routing-pages
- Owner: smichaelsen
- Created: 2020-10-20T18:39:30.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-10-30T09:41:28.000Z (about 2 months ago)
- Last Synced: 2024-12-16T01:39:01.900Z (7 days ago)
- Language: PHP
- Size: 24.4 KB
- Stars: 18
- Watchers: 4
- Forks: 10
- Open Issues: 8
-
Metadata Files:
- Readme: Readme.md
Awesome Lists containing this project
README
# 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
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
````
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
`dynamicPages` has three possible properties.
### `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`
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`
Can be a string or an array of `switchableControllerActions` values. Will find all pages that contain plugins with the given action configured.
### `withCType`
Can be a string or an array of `withCType` values. Will find all pages that contain content element with given CType.
### `withDoktypes`
Can be an integer or an array of `withDoktypes` values. Will find all pages with given doktype.