diff --git a/typo3/sysext/core/Classes/Routing/Enhancer/PluginEnhancer.php b/typo3/sysext/core/Classes/Routing/Enhancer/PluginEnhancer.php index e76d210d10df12e1b7a071667769e81cf9f20994..7f23d13a313a089cd613d3e68061323559280181 100644 --- a/typo3/sysext/core/Classes/Routing/Enhancer/PluginEnhancer.php +++ b/typo3/sysext/core/Classes/Routing/Enhancer/PluginEnhancer.php @@ -85,6 +85,10 @@ class PluginEnhancer extends AbstractEnhancer implements RoutingEnhancerInterfac $page = $route->getOption('_page'); $pageId = (int)($page['l10n_parent'] > 0 ? $page['l10n_parent'] : $page['uid']); + // See PageSlugCandidateProvider where this is added. + if ($page['MPvar'] ?? '') { + $routeArguments['MP'] = $page['MPvar']; + } $type = $this->resolveType($route, $remainingQueryParameters); return new PageArguments($pageId, $type, $routeArguments, $staticArguments, $remainingQueryParameters); } diff --git a/typo3/sysext/core/Classes/Routing/Enhancer/SimpleEnhancer.php b/typo3/sysext/core/Classes/Routing/Enhancer/SimpleEnhancer.php index 25e3511def4e6b13d3509f9c0122887d0db69a6e..c8c34899d42ac48a1ef1308146e1fad670210f6a 100644 --- a/typo3/sysext/core/Classes/Routing/Enhancer/SimpleEnhancer.php +++ b/typo3/sysext/core/Classes/Routing/Enhancer/SimpleEnhancer.php @@ -73,6 +73,10 @@ class SimpleEnhancer extends AbstractEnhancer implements RoutingEnhancerInterfac $page = $route->getOption('_page'); $pageId = (int)($page['l10n_parent'] > 0 ? $page['l10n_parent'] : $page['uid']); + // See PageSlugCandidateProvider where this is added. + if ($page['MPvar'] ?? '') { + $routeArguments['MP'] = $page['MPvar']; + } $type = $this->resolveType($route, $remainingQueryParameters); return new PageArguments($pageId, $type, $routeArguments, $staticArguments, $remainingQueryParameters); } diff --git a/typo3/sysext/core/Classes/Routing/PageRouter.php b/typo3/sysext/core/Classes/Routing/PageRouter.php index 3bc665c0b0f980419fef3c83010d27740ec492fe..94f331e828a5dbd5cfee840678027fc934ccb34d 100644 --- a/typo3/sysext/core/Classes/Routing/PageRouter.php +++ b/typo3/sysext/core/Classes/Routing/PageRouter.php @@ -186,7 +186,13 @@ class PageRouter implements RouterInterface } } - $pageCollection->addNamePrefix('page_' . $page['uid'] . '_'); + $collectionPrefix = 'page_' . $page['uid']; + // Pages with a MountPoint Parameter means that they have a different context, and should be treated + // as a separate instance + if (isset($page['MPvar'])) { + $collectionPrefix .= '_MP_' . str_replace(',', '', $page['MPvar']); + } + $pageCollection->addNamePrefix($collectionPrefix . '_'); $fullCollection->addCollection($pageCollection); }