Moin, folgendes Szenario:
Contao 3.2.7 + changelanguage 2.2.1, zweisprachiges Projekt über eine Domain mit /de oder /en in der URL und eben dem Sprachwechsler. Es gibt Seiten, die es nur in einer Sprache gibt, also soll der Wechsler dort sinnvollerweise (und laut Doku) auf die Startseite linken als Fallback. Das wird auch versucht, aber irgendwie falsch, denn es wird der Titel und der Alias der Rootpage dafür genommen (Zeile 326/327):
Code:
$pageTitle = $arrRootPage['title'];
$href = $this->generateFrontendUrl($arrRootPage, null, $arrRootPage['language']);
Imho müsste aber doch auf die erste "Reguläre Seite" gelinkt werden, so wie Contao automatisch diese anzeigt bei leerer URL (ohne Parameter), und dort auch beim Sprachwechsler korrekt verlinkt. Die Verlinkung auf den Rootpage-Alias bringt nämlich nur einen 404er, was auch logisch ist, da nicht als reguläre Seite vorhanden (wenn den Alias "index" nennt, klappt es zwar, aber der Link-Titel ist immer noch falsch). Also habe ich den Code mal wie folgt ergänzt, sodass der Startseiten-Link korrekt wäre:
Code:
$objStartPage = $this->Database->prepare("SELECT * FROM tl_page WHERE pid=? AND type='regular' ORDER BY sorting LIMIT 1")
->execute($arrRootPage['id'])->fetchAssoc();
if ($objStartPage) {
$objStartPage['language'] = $arrRootPage['language'];
$pageTitle = $objStartPage['title'];
$href = $this->generateFrontendUrl($objStartPage, null, $objStartPage['language']);
} else {
$pageTitle = $arrRootPage['title'];
$href = $this->generateFrontendUrl($arrRootPage, null, $arrRootPage['language']);
}
Das funktioniert prima, wirkt aber irgendwie umständlich. Was meint ihr dazu? Der Umstand, dass sonst keiner dieses Problem hat, macht mich nämlich stutzig, denn die 404er fallen ja recht schnell auf beim Testen. Ist es einfach ein arger Denkfehler meinerseits, und wie würde man es denn sonst lösen?
beste Grüße
Lesezeichen