/** * @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; }
/** * @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 mixed */ public function render() { // Get page via pageUid argument or current id $pageUid = intval($this->arguments['pageUid']); if (0 === $pageUid) { $pageUid = $GLOBALS['TSFE']->id; } $page = $this->pageSelect->getPage($pageUid); // Add the page overlay $languageUid = intval($GLOBALS['TSFE']->sys_language_uid); if (0 !== $languageUid) { $pageOverlay = $this->pageSelect->getPageOverlay($pageUid, $languageUid); if (TRUE === is_array($pageOverlay)) { $page = GeneralUtility::array_merge_recursive_overrule($page, $pageOverlay, FALSE, FALSE); } } $content = NULL; // Check if field should be returned or assigned $field = $this->arguments['field']; if (TRUE === empty($field)) { $content = $page; } elseif (TRUE === isset($page[$field])) { $content = $page[$field]; } // Return if no assign $as = $this->arguments['as']; if (TRUE === empty($as)) { return $content; } $variables = array($as => $content); $output = ViewHelperUtility::renderChildrenWithVariables($this, $this->templateVariableContainer, $variables); return $output; }
/** * @return mixed */ public function render() { // Get page via pageUid argument or current id $pageUid = intval($this->arguments['pageUid']); if (0 === $pageUid) { $pageUid = $GLOBALS['TSFE']->id; } $page = $this->pageSelect->getPage($pageUid); // Add the page overlay $languageUid = intval($GLOBALS['TSFE']->sys_language_uid); if (0 !== $languageUid) { $pageOverlay = $this->pageSelect->getPageOverlay($pageUid, $languageUid); if (TRUE === is_array($pageOverlay)) { if (TRUE === method_exists('TYPO3\\CMS\\Core\\Utility\\ArrayUtility', 'mergeRecursiveWithOverrule')) { ArrayUtility::mergeRecursiveWithOverrule($page, $pageOverlay, FALSE, FALSE); } else { $page = GeneralUtility::array_merge_recursive_overrule($page, $pageOverlay, FALSE, FALSE); } } } $content = NULL; // Check if field should be returned or assigned $field = $this->arguments['field']; if (TRUE === empty($field)) { $content = $page; } elseif (TRUE === isset($page[$field])) { $content = $page[$field]; } return $this->renderChildrenWithVariableOrReturnInput($content); }
/** * Get the selected page. * * @return array */ private function getPage() { $pageUid = intval($this->arguments['pageUid']); if ($pageUid === 0) { $pageUid = $GLOBALS['TSFE']->id; } return $this->pageSelect->getPage($pageUid); }
/** * @return mixed */ public function render() { $pageUid = $this->arguments['pageUid']; if (0 === $pageUid) { $pageUid = $GLOBALS['TSFE']->id; } $rootLineData = $this->pageSelect->getRootLine($pageUid); return $this->renderChildrenWithVariableOrReturnInput($rootLineData); }
/** * Render method * * @param integer $pageUid * @param boolean $includeHidden * @param boolean $showHiddenInMenu * @return string */ public function render($pageUid = NULL, $includeHidden = FALSE, $showHiddenInMenu = FALSE) { if (NULL === $pageUid || TRUE === empty($pageUid) || 0 === intval($pageUid)) { $pageUid = $GLOBALS['TSFE']->id; } $menu = $this->pageSelect->getMenu($pageUid, array(), '', $showHiddenInMenu); $pageHasSubPages = 0 < count($menu); if (TRUE === $pageHasSubPages) { return $this->renderThenChild(); } else { return $this->renderElseChild(); } }
/** * @return mixed */ public function render() { $pageUid = $this->arguments['pageUid']; if (0 === $pageUid) { $pageUid = $GLOBALS['TSFE']->id; } $rootLineData = $this->pageSelect->getRootLine($pageUid); $as = $this->arguments['as']; if (TRUE === empty($as)) { return $rootLineData; } $variables = array($as => $rootLineData); $output = ViewHelperUtility::renderChildrenWithVariables($this, $this->templateVariableContainer, $variables); return $output; }
/** * This method decides if the condition is TRUE or FALSE. It can be overriden in extending viewhelpers to adjust functionality. * * @param array $arguments ViewHelper arguments to evaluate the condition for this ViewHelper, allows for flexiblity in overriding this method. * @return bool */ protected static function evaluateCondition($arguments = NULL) { $pageUid = $arguments['pageUid']; $includeHidden = $arguments['includeHidden']; $showHiddenInMenu = $arguments['showHiddenInMenu']; if (NULL === $pageUid || TRUE === empty($pageUid) || 0 === intval($pageUid)) { $pageUid = $GLOBALS['TSFE']->id; } if (self::$pageSelect === NULL) { $objectManager = GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager'); self::$pageSelect = $objectManager->get('FluidTYPO3\\Vhs\\Service\\PageSelectService'); } $menu = self::$pageSelect->getMenu($pageUid, array(), '', $showHiddenInMenu); $pageHasSubPages = 0 < count($menu); return TRUE === $pageHasSubPages; }
/** * @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); return $menuData; }
/** * @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); } }
/** * Get content records based on column and pid * * @param integer $limit * @param string $order * @return array */ protected function getContentRecords($limit = NULL, $order = NULL) { $pageUid = $this->getPageUid(); $slide = (int) $this->arguments['slide']; $slideCollectReverse = (bool) $this->arguments['slideCollectReverse']; $slideCollect = (int) $this->arguments['slideCollect']; if (0 < $slideCollect) { // $slideCollect overrides $slide to automatically start sliding if // collection is enabled. $slide = $slideCollect; } // find out which storage page UIDs to read from, respecting slide depth $storagePageUids = array(); if (0 === $slide) { $storagePageUids[] = $pageUid; } else { $rootLine = $this->pageSelect->getRootLine($pageUid, NULL, $slideCollectReverse); if (-1 !== $slide) { $rootLine = array_slice($rootLine, 0, $slide); } foreach ($rootLine as $page) { $storagePageUids[] = (int) $page['uid']; } } // select content elements, respecting slide and slideCollect. $contentRecords = array(); do { $storagePageUid = array_shift($storagePageUids); $contentFromPageUid = $this->getContentRecordsFromPage($storagePageUid, $limit, $order); if (0 < count($contentFromPageUid)) { $contentRecords = array_merge($contentRecords, $contentFromPageUid); if (0 === $slideCollect) { // stop collecting because argument said so and we've gotten at least one record now. break; } } } while (0 < count($storagePageUids)); if (TRUE === (bool) $this->arguments['render']) { $contentRecords = $this->getRenderedRecords($contentRecords); } else { $contentRecords = $contentRecords; } return $contentRecords; }
/** * 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(); }
/** * Get content records based on column and pid * * @param integer $limit * @param string $order * @return array */ protected function getContentRecords($limit = NULL, $order = NULL) { if (NULL === $limit && FALSE === empty($this->arguments['limit'])) { $limit = intval($this->arguments['limit']); } if (NULL === $order && FALSE === empty($this->arguments['order'])) { $order = $this->arguments['order']; } $loadRegister = FALSE; if (FALSE === empty($this->arguments['loadRegister'])) { $this->contentObject->cObjGetSingle('LOAD_REGISTER', $this->arguments['loadRegister']); $loadRegister = TRUE; } $pageUid = $GLOBALS['TSFE']->id; if (FALSE === empty($this->arguments['pageUid'])) { $pageUid = $this->arguments['pageUid']; } elseif (FALSE === empty($GLOBALS['TSFE']->page['content_from_pid'])) { $pageUid = $GLOBALS['TSFE']->page['content_from_pid']; } $pageUid = intval($pageUid); if (FALSE === empty($order)) { $sortDirection = strtoupper(trim($this->arguments['sortDirection'])); if ('ASC' !== $sortDirection && 'DESC' !== $sortDirection) { $sortDirection = 'ASC'; } $order = $order . ' ' . $sortDirection; } $slide = intval($this->arguments['slide']); $slideCollect = intval($this->arguments['slideCollect']); $slide = min($slide, $slideCollect); $slideCollectReverse = (bool) $this->arguments['slideCollectReverse']; $rootLine = NULL; if (0 !== $slide) { $rootLine = $this->pageSelect->getRootLine($pageUid, NULL, $slideCollectReverse); } $colPos = intval($this->arguments['column']); $contentUids = $this->arguments['contentUids']; $content = array(); $hideUntranslated = (bool) $this->arguments['hideUntranslated']; $currentLanguage = $GLOBALS['TSFE']->sys_language_content; $languageCondition = '(sys_language_uid IN (-1,' . $currentLanguage . ')'; if (0 < $currentLanguage) { if (TRUE === $hideUntranslated) { $languageCondition .= ' AND l18n_parent > 0'; } $nestedQuery = $GLOBALS['TYPO3_DB']->SELECTquery('l18n_parent', 'tt_content', 'sys_language_uid = ' . $currentLanguage . $GLOBALS['TSFE']->cObj->enableFields('tt_content')); $languageCondition .= ' AND uid NOT IN (' . $nestedQuery . ')'; } $languageCondition .= ')'; do { if (0 !== $slide) { $page = array_shift($rootLine); if (TRUE === empty($page)) { break; } $pageUid = $page['uid']; } if (TRUE === is_array($contentUids)) { $conditions = 'uid IN (' . implode(',', $contentUids) . ')'; } else { $conditions = "pid = '" . $pageUid . "' AND colPos = '" . $colPos . "'" . $GLOBALS['TSFE']->cObj->enableFields('tt_content') . ' AND ' . $languageCondition; } $rows = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('*', 'tt_content', $conditions, 'uid', $order, $limit); if (TRUE === (bool) $this->arguments['render'] && FALSE === empty($rows)) { $content = $this->getRenderedRecords($rows); } else { $content = $rows; } if (0 !== count($content) && 0 === $slideCollect) { break; } } while (--$slide !== -1); if (TRUE === $loadRegister) { $this->contentObject->cObjGetSingle('RESTORE_REGISTER', ''); } return $content; }