public function render()
{
if ('BE' === TYPO3_MODE) {
return null;
}
$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 = (int) $this->arguments['pageUid'];
if (0 === $pageUid) {
$pageUid = $GLOBALS['TSFE']->id;
}
$normalWhenNoLanguage = $this->arguments['normalWhenNoLanguage'];
$addQueryString = $this->arguments['addQueryString'];
/** @var UriBuilder $uriBuilder */
$uriBuilder = $this->controllerContext->getUriBuilder();
$uriBuilder = $uriBuilder->reset()->setTargetPageUid($pageUid)->setCreateAbsoluteUri(true)->setAddQueryString($addQueryString);
$this->tagBuilder->reset();
$this->tagBuilder->setTagName('link');
$this->tagBuilder->addAttribute('rel', 'alternate');
/** @var PageRenderer $pageRenderer */
$pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
$usePageRenderer = 1 !== (int) $GLOBALS['TSFE']->config['config']['disableAllHeaderCode'];
$output = '';
foreach ($languages as $languageUid => $languageName) {
if (false === $this->pageService->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);
}
return null;
}