/** * @return mixed */ public function render() { if ('BE' === TYPO3_MODE) { return ''; } $pageUid = $this->arguments['pageUid']; $normalWhenNoLanguage = $this->arguments['normalWhenNoLanguage']; if (0 === $pageUid) { $pageUid = $GLOBALS['TSFE']->id; } $currentLanguageUid = $GLOBALS['TSFE']->sys_language_uid; $languageUid = 0; if (FALSE === $this->pageSelect->hidePageForLanguageUid($pageUid, $currentLanguageUid, $normalWhenNoLanguage)) { $languageUid = $currentLanguageUid; } else { if (0 !== $currentLanguageUid) { if (TRUE === $this->pageSelect->hidePageForLanguageUid($pageUid, 0, $normalWhenNoLanguage)) { return ''; } } } $uriBuilder = $this->controllerContext->getUriBuilder(); $uri = $uriBuilder->reset()->setTargetPageUid($pageUid)->setCreateAbsoluteUri(TRUE)->setArguments(array('L' => $languageUid))->build(); $this->tag->addAttribute('rel', 'canonical'); $this->tag->addAttribute('href', $uri); $renderedTag = $this->tag->render(); if (1 === intval($GLOBALS['TSFE']->config['config']['disableAllHeaderCode'])) { return $renderedTag; } $GLOBALS['TSFE']->getPageRenderer()->addMetaTag($renderedTag); }
/** * @return string */ public function render() { if ('BE' === TYPO3_MODE) { return; } $languages = $this->arguments['languages']; if (TRUE === $languages instanceof \Traversable) { $languages = iterator_to_array($languages); } elseif (TRUE === is_string($languages)) { $languages = GeneralUtility::trimExplode(',', $languages, TRUE); } else { $languages = (array) $languages; } $pageUid = intval($this->arguments['pageUid']); $normalWhenNoLanguage = $this->arguments['normalWhenNoLanguage']; if (0 === $pageUid) { $pageUid = $GLOBALS['TSFE']->id; } $currentLanguageUid = $GLOBALS['TSFE']->sys_language_uid; $languageUid = 0; if (FALSE === $this->pageSelect->hidePageForLanguageUid($pageUid, $currentLanguageUid, $normalWhenNoLanguage)) { $languageUid = $currentLanguageUid; } elseif (0 !== $currentLanguageUid) { if (TRUE === $this->pageSelect->hidePageForLanguageUid($pageUid, 0, $normalWhenNoLanguage)) { return; } } if (FALSE === empty($languages[$languageUid])) { return $languages[$languageUid]; } return $languageUid; }
/** * Filter the fetched menu according to visibility etc. * * @param array $menu * @param array $rootLine * @param array $parentPage * @return array */ protected function parseMenu($menu, $rootLine, array $parentPage = NULL) { $classFirst = $this->arguments['classFirst']; $classLast = $this->arguments['classLast']; $filtered = array(); $allowedDocumentTypes = $this->allowedDoktypeList(); foreach ($menu as $uid => $page) { if (TRUE === isset($page['tx_realurl_exclude']) && TRUE === (bool) $page['tx_realurl_exclude'] && TRUE === (bool) $this->arguments['resolveExclude']) { continue; } elseif (TRUE === isset($page['tx_cooluri_exclude']) && TRUE === (bool) $page['tx_cooluri_exclude'] && TRUE === (bool) $this->arguments['resolveExclude']) { continue; } elseif (TRUE === $this->pageSelect->hidePageForLanguageUid($page['uid'], $GLOBALS['TSFE']->sys_language_uid)) { continue; } elseif (TRUE === in_array($page['doktype'], $allowedDocumentTypes)) { $filtered[$uid] = $this->getMenuItemEntry($page, $rootLine, $parentPage); } } $length = count($filtered); if (0 < $length) { $idx = 1; foreach ($filtered as $uid => $page) { if (1 === $idx) { $filtered[$uid]['class'] = trim($filtered[$uid]['class'] . ' ' . $classFirst); } if ($length === $idx) { $filtered[$uid]['class'] = trim($filtered[$uid]['class'] . ' ' . $classLast); } $idx++; } } return $filtered; }
/** * @param $pageUid * @param string $where * @return array */ public function getMenu($pageUid, $where = '') { $excludePages = $this->processPagesArgument($this->arguments['excludePages']); $showHiddenInMenu = (bool) $this->arguments['showHiddenInMenu']; $allowedDoktypeList = $this->allowedDoktypeList(); $menuData = $this->pageSelect->getMenu($pageUid, $excludePages, $where, $showHiddenInMenu, FALSE, $allowedDoktypeList); foreach ($menuData as $key => $page) { if (TRUE === $this->pageSelect->hidePageForLanguageUid($page['uid'], $GLOBALS['TSFE']->sys_language_uid)) { unset($menuData[$key]); } } return $menuData; }
/** * @return string */ public function render() { if ('BE' === TYPO3_MODE) { return; } $languages = $this->arguments['languages']; if (TRUE === $languages instanceof \Traversable) { $languages = iterator_to_array($languages); } elseif (TRUE === is_string($languages)) { $languages = GeneralUtility::trimExplode(',', $languages, TRUE); } else { $languages = (array) $languages; } $pageUid = intval($this->arguments['pageUid']); $normalWhenNoLanguage = $this->arguments['normalWhenNoLanguage']; if (0 === $pageUid) { $pageUid = $GLOBALS['TSFE']->id; } $currentLanguageUid = $GLOBALS['TSFE']->sys_language_uid; unset($languages[$currentLanguageUid]); /** @var UriBuilder $uriBuilder */ $uriBuilder = $this->controllerContext->getUriBuilder(); $uriBuilder = $uriBuilder->reset()->setTargetPageUid($pageUid)->setCreateAbsoluteUri(TRUE); $this->tagBuilder->reset(); $this->tagBuilder->setTagName('link'); $this->tagBuilder->addAttribute('rel', 'alternate'); /** @var PageRenderer $pageRenderer */ $pageRenderer = $GLOBALS['TSFE']->getPageRenderer(); $usePageRenderer = 1 !== intval($GLOBALS['TSFE']->config['config']['disableAllHeaderCode']); $output = ''; foreach ($languages as $languageUid => $languageName) { if (FALSE === $this->pageSelect->hidePageForLanguageUid($pageUid, $languageUid, $normalWhenNoLanguage)) { $uri = $uriBuilder->setArguments(array('L' => $languageUid))->build(); $this->tagBuilder->addAttribute('href', $uri); $this->tagBuilder->addAttribute('hreflang', $languageName); $renderedTag = $this->tagBuilder->render(); if (TRUE === $usePageRenderer) { $pageRenderer->addMetaTag($renderedTag); } else { $output .= $renderedTag . LF; } } } if (FALSE === $usePageRenderer) { return trim($output); } }
/** * Render method * @return NULL|string */ public function render() { // Check if link wizard link $pageUid = $this->arguments['pageUid']; $additionalParameters = (array) $this->arguments['additionalParams']; if (FALSE === is_numeric($pageUid)) { $linkConfig = GeneralUtility::unQuoteFilenames($pageUid, TRUE); if (TRUE === isset($linkConfig[0])) { $pageUid = $linkConfig[0]; } if (TRUE === isset($linkConfig[1]) && '-' !== $linkConfig[1]) { $this->tag->addAttribute('target', $linkConfig[1]); } if (TRUE === isset($linkConfig[2]) && '-' !== $linkConfig[2]) { $this->tag->addAttribute('class', $linkConfig[2]); } if (TRUE === isset($linkConfig[3]) && '-' !== $linkConfig[3]) { $this->tag->addAttribute('title', $linkConfig[3]); } if (TRUE === isset($linkConfig[4]) && '-' !== $linkConfig[4]) { $additionalParametersString = trim($linkConfig[4], '&'); $additionalParametersArray = GeneralUtility::trimExplode('&', $additionalParametersString); foreach ($additionalParametersArray as $parameter) { list($key, $value) = GeneralUtility::trimExplode('=', $parameter); $additionalParameters[$key] = $value; } } } // Get page via pageUid argument or current id $pageUid = intval($pageUid); if (0 === $pageUid) { $pageUid = $GLOBALS['TSFE']->id; } $page = $this->pageSelect->getPage($pageUid); if (TRUE === empty($page)) { return NULL; } // Do not render the link, if the page should be hidden $currentLanguageUid = $GLOBALS['TSFE']->sys_language_uid; $hidePage = $this->pageSelect->hidePageForLanguageUid($pageUid, $currentLanguageUid); if (TRUE === $hidePage) { return NULL; } // Get the title from the page or page overlay if (0 < $currentLanguageUid) { $pageOverlay = $this->pageSelect->getPageOverlay($pageUid, $currentLanguageUid); $title = $this->getTitleValue($pageOverlay); } else { $title = $this->getTitleValue($page); } // Check if we should assign page title to the template variable container $pageTitleAs = $this->arguments['pageTitleAs']; if (FALSE === empty($pageTitleAs)) { $variables = array($pageTitleAs => $title); } else { $variables = array(); } // Render childs to see if an alternative title content should be used $renderedTitle = ViewHelperUtility::renderChildrenWithVariables($this, $this->templateVariableContainer, $variables); if (FALSE === empty($renderedTitle)) { $title = $renderedTitle; } $uriBuilder = $this->controllerContext->getUriBuilder(); $uri = $uriBuilder->reset()->setTargetPageUid($pageUid)->setTargetPageType($this->arguments['pageType'])->setNoCache($this->arguments['noCache'])->setUseCacheHash(!$this->arguments['noCacheHash'])->setSection($this->arguments['section'])->setLinkAccessRestrictedPages($this->arguments['linkAccessRestrictedPages'])->setArguments($additionalParameters)->setCreateAbsoluteUri($this->arguments['absolute'])->setAddQueryString($this->arguments['addQueryString'])->setArgumentsToBeExcludedFromQueryString((array) $this->arguments['argumentsToBeExcludedFromQueryString'])->build(); $this->tag->addAttribute('href', $uri); $this->tag->setContent($title); return $this->tag->render(); }