smic / dynamic-routing-pages
Generates "limitToPages" configuration for your enhancers on the fly so you don't need to hardcode it.
Installs: 75 276
Dependents: 0
Suggesters: 0
Security: 0
Stars: 18
Watchers: 4
Forks: 9
Open Issues: 6
Type:typo3-cms-extension
Requires
- typo3/cms-core: ^10.4 || ^11
This package is auto-updated.
Last update: 2024-11-30 09:52:10 UTC
README
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.