Sobald man bei tt_news in Verbindung mit RealUrl die Seiten-URL im Browser manuell bearbeitet und den News-Titel ändert oder entfernt, landet man auf der News-SINGLE-Seite mit folgender unschönen Meldung: "Keine news_id übergeben.". Eine kurze Google-Recherche nach diesem Text verrät schnell, dass viele TYPO3-Webmaster dieses Problem einfach so erdulden.
Dabei wäre die Lösung gar nicht einmal so schwer. Um sich gegen dieses Szenario abzusichern, helfen einem wenige Zeilen Typoscript, mit denen eine sogennante Condition (= Bedingung) erstellt wird. Um folgendes Typoscript verwenden zu können, muss aber zuerst ein Extension-Template für die News-Detailseite erstellt werden, da die Weiterleitung ansonsten auf jeder Seite erfolgen würde. Dort wird anschließend das Script in den Setup-Teil eingetragen:
# pruefen, ob die GET-Variable [tt_news] gesetzt und kleiner als 1 ist
[globalVar = GP:tx_ttnews|tt_news < 1]
# dann mach mir eine 301-Weiterleitung auf meine News-Listenansicht
config.additionalHeaders = HTTP/1.0 301 Permanent Redirect | Location: http:// example.de/news/
# fertig!
[global]
Zur Erklärung: tt_news-Nachrichten werden in der Regel mit folgender Syntax aufgerufen: "/news/details.html?tx_ttnews[tt_news]=1", wobei 1 der Id der aufzurufenden News entspricht. Wenn nun dieser Parameter auf der News-SINGLE-Ansicht nicht gesetzt wäre, könnte auch keine News gefunden werden. Folge ist, dass die unschöne Meldung "Keine news_id übergeben." angezeigt wird. Wenn nun also keine News-Id übergeben wurde und somit die Prüfung erfolgreich war, wird die komplette Seite per 301-Redirect (= permanente Weiterleitung) auf die unter Location eingetragene Website umgeleitet.
Sollte man auch mehrere Sprachen im Einsatz haben, kann man mit einer kombinierten Condition auch diese jeweils prüfen:
# wenn Sprachparameter = 1 UND [tt_news] < 1
[globalVar = GP:L = 1] && [globalVar = GP:tx_ttnews|tt_news < 1]
config.additionalHeaders = HTTP/1.0 301 Permanent Redirect | Location: http:// example.com/news/
[global]
Ab jetzt wird nicht mehr an der fehlenden News-Id gemeckert und beim Aufruf von manipulierten News-Adressen gleich die News-Listenansicht aufgerufen, bzw. die Seite, welche als Location in der Condition eingetragen wurde. Vorstellbar wäre hier z. B. auch eine 404-Seite. Natürlich funktioniert dieser Trick auch, wenn man eine leere SINGLE-Ansicht aufrufen will. Auch dann wird direkt von z. B. "/news/artikel/" sofort auf "/news/" und die dortige Listenansicht aller News umgeleitet. Und das allerbeste daran ist auch noch, dass die Weiterleitung immer mit dem 301-Status erfolgt, welcher beim Thema Suchmaschinenoptimierung und Google sehr gern gesehen wird.
Es ist in diesem Fall übrigens egal, welche "Sprechende URLs"-Extension verwendet wird, da die Lösung mit TYPO3-eigenen Bordmitteln geschieht.
Gibt es auch eine Lösung, wenn eine News-ID einer gerade nicht sichtbaren News angefragt wird?
plugin.tt_news.code = LIST
[globalVar = GP:tx_ttnews|tt_news > 0]
plugin.tt_news.code = SINGLE
[global]
Dann gibt es keine nervige Meldung mehr....