Patrick Fiedorowicz |  25.11.2011 | TYPO3, Extensions, tt_news
Wegweiser in Manhattan

Bild: aboutpixel.de / Manhattan © Rainer Sturm

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.

  1. Flo Flo 30.10.2013
    Funktioniert aber nur, wenn keine News-ID mitgegeben wird.
    Gibt es auch eine Lösung, wenn eine News-ID einer gerade nicht sichtbaren News angefragt wird?
    1. Flo Flo 30.10.2013
      Hab eine Lösung gefunden: http://bugs.typo3.org/view.php?id=18486
  2. Freddy Tripold Freddy Tripold 25.01.2014
    Das setzt aber voraus, dass jede Seite mit Singleansicht ein eigenes Template hat. Einfacher ist es das Plugin unkonfiguriert zu lassen und folgenden Code zu verwenden.
    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....
    1. Patrick Fiedorowicz Patrick Fiedorowicz 26.01.2014
      @Freddy: deine Lösung hat aber den Nachteil, dass du auf der Listen- sowie Single-Seite "Duplicate Content" hast, das wird Google nicht gefallen ;)
      Mit dem Redirect zur Listen-Seite kannst du den GoogleBot steuern, welche Seite er wirklich indexieren soll.

      Und wenn du mehrere Single-Seiten hast, dann kannst du auch auf jeder Seite ein Erweiterungs-Template hinterlegen und dort das Typoscript hinterlegen. Das ist ein einmaliger Aufwand, der sich in Grenzen hält...

      Schöne Grüße
      Patrick

Neue Antwort auf Kommentar schreiben

Deine E-Mail-Adresse wird nicht veröffentlich. Bitte gib Sie an, um dein Gravatar-Bild anzuzeigen.