diff --git a/Classes/Service/PageService.php b/Classes/Service/PageService.php index 20599a07a..ec968377f 100644 --- a/Classes/Service/PageService.php +++ b/Classes/Service/PageService.php @@ -52,6 +52,7 @@ class PageService implements SingletonInterface * @param boolean $includeNotInMenu * @param boolean $includeMenuSeparator * @param boolean $disableGroupAccessCheck + * @param boolean $normalWhenNoLanguage * * @return array */ @@ -60,7 +61,8 @@ public function getMenu( array $excludePages = [], $includeNotInMenu = false, $includeMenuSeparator = false, - $disableGroupAccessCheck = false + $disableGroupAccessCheck = false, + $normalWhenNoLanguage = false ) { $pageRepository = $this->getPageRepository(); $pageConstraints = $this->getPageConstraints($excludePages, $includeNotInMenu, $includeMenuSeparator); @@ -72,8 +74,8 @@ public function getMenu( static::$cachedMenus[$cacheKey] = array_filter( $pageRepository->getMenu($pageUid, '*', 'sorting', $pageConstraints), - function($page) { - return $this->hidePageForLanguageUid($page) === false; + function($page) use ($normalWhenNoLanguage) { + return $this->hidePageForLanguageUid($page, -1, $normalWhenNoLanguage) === false; } ); } diff --git a/Classes/ViewHelpers/Menu/AbstractMenuViewHelper.php b/Classes/ViewHelpers/Menu/AbstractMenuViewHelper.php index c59967056..0654a664c 100644 --- a/Classes/ViewHelpers/Menu/AbstractMenuViewHelper.php +++ b/Classes/ViewHelpers/Menu/AbstractMenuViewHelper.php @@ -210,6 +210,13 @@ public function initializeArguments() 'Optional divider to insert between each menu item. Note that this does not mix well with automatic ' . 'rendering due to the use of an ul > li structure' ); + $this->registerArgument( + 'normalWhenNoLanguage', + 'boolean', + 'If TRUE, a missing page overlay should be ignored', + false, + false + ); } /** @@ -420,6 +427,7 @@ public function getMenu($pageUid = null, $entryLevel = 0) $showHiddenInMenu = (boolean) $this->arguments['showHiddenInMenu']; $showAccessProtected = (boolean) $this->arguments['showAccessProtected']; $includeSpacers = (boolean) $this->arguments['includeSpacers']; + $normalWhenNoLanguage = (boolean) $this->arguments['normalWhenNoLanguage']; $excludePages = $this->processPagesArgument($this->arguments['excludePages']); return $this->pageService->getMenu( @@ -427,7 +435,8 @@ public function getMenu($pageUid = null, $entryLevel = 0) $excludePages, $showHiddenInMenu, $includeSpacers, - $showAccessProtected + $showAccessProtected, + $normalWhenNoLanguage ); }