From d73711fcad6bca7a4bf873f5c96d1fbb017cfd44 Mon Sep 17 00:00:00 2001 From: Friedemann Altrock Date: Fri, 31 Mar 2023 20:41:09 +0200 Subject: [PATCH] Fix cross-site links when target site does not contain the current language --- .../Classes/Typolink/PageLinkBuilder.php | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/typo3/sysext/frontend/Classes/Typolink/PageLinkBuilder.php b/typo3/sysext/frontend/Classes/Typolink/PageLinkBuilder.php index d2c82fb3f2bd..86b63ed33f51 100644 --- a/typo3/sysext/frontend/Classes/Typolink/PageLinkBuilder.php +++ b/typo3/sysext/frontend/Classes/Typolink/PageLinkBuilder.php @@ -470,12 +470,18 @@ protected function getSiteLanguageOfTargetPage(Site $siteOfTargetPage, string $t } else { $targetLanguageId = (int)$targetLanguageId; } - try { - $siteLanguageOfTargetPage = $siteOfTargetPage->getLanguageById($targetLanguageId); - } catch (\InvalidArgumentException $e) { - throw new UnableToLinkException('The target page does not have a language with ID ' . $targetLanguageId . ' configured in its site configuration.', 1535477406); + + $languageIds = array_merge([$targetLanguageId], $currentSiteLanguage->getFallbackLanguageIds()); + + foreach ($languageIds as $languageId) { + try { + return $siteOfTargetPage->getLanguageById($languageId); + } catch (\InvalidArgumentException $e) { + continue; + } } - return $siteLanguageOfTargetPage; + + throw new UnableToLinkException('The target page does not have a language with ID ' . $targetLanguageId . ' configured in its site configuration.', 1535477406); } /**