Hallo,
im Forum taucht bereits mehrfach die Frage auf, wie man die Fehlermeldung vermeiden kann, wenn ein Benutzer eine Seite anfordert, die in einer bestimmten Sprache noch nicht vorhanden ist.
Beispiel: Seite A ist nur in Deutsch vorhanden, der Benutzer klickt aber auf das Symbol mit Englisch. Die URL wird um den entsprechenden L-Parameter erweitert, die englische Seite existiert nicht und es kommt eine Fehlermeldung.
Lösungsansätze:
Ich möchte gerne, dass in diesem Fall die englische Startseite angezeigt wird, bekomme aber nciht hin, dass die deutsche Seite korrekt angezeigt wird (die existiert ja), die englische aber zu einer anderen Seite verzweigt.
Der Tip, auf den englischen Seiten dann ein Inhaltselement anzulegen mit "Coming Soon" ist nicht zielführend, wenn der Kunde für ca. die Hälfte aller Seiten ncoh keine Übersetzung hat.
wie wärs denn mit einem php-skript schreiben das checkt ob die sprache vorhanden ist oder nicht und dann den language switcher entsprechend zu der richtigen seite führt? könnte man prima als extension bauen. 😃
Hi!
Folgende Möglichkeiten bietet Dir Typo3 per Setup an (Stichworte sys_language_mode und sys_language_softMergeIfNotBlank):
https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/TopLevelObjects/Config.html
Alles andere musst Du selbst entwickeln, aber vielleicht genügen die vorhandenen Optionen.
CU
maxhb
Hallo,
ich habe die Umleitungs-Idee mal als kleine Extension realisiert, hier der Link
http://typo3.org/extensions/repository/new/ch_notranslation/
Gruß,
T.
Hallo!
Es gibt auch noch eine andere Möglichkeit:
In typo3conf/localconf.php kann ein "Page not found handling" definiert werden ($TYPO3_CONF_VARS['FE']['pageNotFound_handling']). Hierbei kann man verschiedene Handlings verwenden:
(Vgl. tslib_fe::pageNotFoundHandler)
Einzigstes Problem, die Funktion beendet immer das laufende Script nach dem Ausführen des entsprechenden Handlings (php:exit).
Gruss
Verstehe ich nicht! Page not found != Page unavailable for requested language? Und eigene Funktionen ausführen konnte ich da auch nicht finden? Kannst Du mal konkreter werden? Codebeispiel oder so? Danke!
Hallo!
Immer wenn Typo3 eine Seite nicht findet, ob jetzt die Seite nicht vorhanden ist oder ob es eine Seite in einer Sprache nicht gibt (natürlich nur wenn hideIfNotTranslated gesetzt ist, ansonsten wird ja die default-sprache gewählt), ruft Typo3 die Funktion tslib_fe::pageNotFoundAndExit auf (vgl tslib_fe::settingLanguage). Diese Funktion wiederum führt die beschriebene pageNotFoundHandler-Funktion auf.
Page not found handling im Detail (vgl. t3lib/config_default.php):
$TYPO3_CONF_VARS['FE']['pageNotFound_handling'] = Wert
A) Default
Wert: keinen
Aktion: Standard, Text wird angezeigt. z.b. Page is not available in the requested language.
B) Boolean
Wert: 1
Aktion: Ausgabe Text: The page did not exist or was inaccessible...
C) User function
Wert: USER_FUNCTION:typo3conf/pageNotFoundHandling.php:user_pageNotFound->pageNotFound
Aktion: die Funktion wird ausgeführt
D) Readfile
Wert: READFILE:fileadmin/notfound.html
Aktion: die angegebene Datei wird gelesen und angezeigt (vorhandene Marker CURRENT_URL, REASON werden ersetzt)
E) URL
Wert: http://www.domain.org/errors/notfound.html
Aktion: Header Location zu besagter URL
und immer wird der Header aus $TYPO3_CONF_VARS['FE']['pageNotFound_handling_statheader'] gesetzt (Default: Status: 404 Not Found).
Nach diesen Aktionen wird das Script mit exit beendet.
Für Dein Problem brauchst Du also nur eine eigene Funktion zu schreiben, die z.B. einen Header-Location auf die Startseite der besagten Sprache macht. Vorteil: Die Klasse tslib_fe wird ab und zu geändert so auch die Funktion darin. Bei einer Änderung musst du jedesmal prüfen ob die in Deiner Extension überschriebene Funktion nicht auch geändert werden muss.
Gruss
Du hast recht, aber diese Userfunc gibt es erst seit T3 3.8.0 und ich hab meinen Patch eigentlich für 3.7.0 geschrieben und dann kurz an 3.8.0 angepasst. 😃
Edit: Ich hab meine Extension geändert. Jetzt geht nur noch für T3 3.7.0. Und mit Einschränkungen für T3 3.8.0. Danke für den Tipp!