In meinem aktuellen Projekt habe ich folgendes Setup: die News-Listenansicht ist auf einer Seite, die für alle verfügbar ist. Die Detailseite dieser Artikel ist jedoch nur nach Login aufrufbar. TYPO3 kann man so konfigurieren, dass falls der Benutzer nicht eingeloggt ist, die Links auf die Detailansicht stattdessen auf die Login-Seite verweisen und an die URL der redirect_url
Parameter drangehängt wird. Ruft dann ein nicht eingeloggter Benutzer den Link auf, wird er auf die Login-Seite weitergeleitet. Ist das Login-Plugin auch noch richtig konfiguriert, dann wird der Benutzer nach dem Login auf die Detailseite des Artikels weitergeleitet. Wenn man bereits vorher eingeloggt war, dann wird direkt auf den Artikel verlinkt.
Ein Problem entsteht erst dann, wenn man den Link zu so einem Artikel per E-Mail verschicken möchte in z.B. einem Newsletter. Wenn man den Link mit Redirect verschickt, dann nützt er nur den nicht eingeloggten Benutzern etwas. Die bereits eingeloggten (Permalogin) landen einfach nur auf der Login-Seite. Der Redirect-Parameter greift nicht, wenn man nicht eingeloggt werden musste. Wenn man den Link ohne Redirect (also Direktlink auf Artikel) verschickt, dann können nur eingeloggte Benutzer mit dem Link was anfangen, alle anderen bekommen 404 oder landen auf den Übersichtsseiten.
Ich habe folgende Lösung dafür entwickelt: Ich habe ein Plugin geschrieben, dass man auf eine für alle verfügbare Seite packt. Anstatt auf die News-Detailseiten verweisen die Newsletter-Link auf diese Seite mit dem Parameter der News ID. Das ganze noch mit RealURL schön gemacht – dann sehen die Links so aus:
www.domain.de/newsletter/artikel/mein-testartikel
Im Plugin kommt dann folgendes an, nachdem RealURL den Link verarbeitet hat:
www.domain.de/index.php?id=123&tx_news_pi1[news]=123&cHash=abc
Das Plugin holt sich den News-Datensatz aus der Datenbank und generiert den Link zum News-Beitrag mittels TypoLink. Da an dieser Stelle die normale TypoLink Konfiguration verwendet wird, wird beim Aufruf der Seite entschieden, ob der Benutzer eingeloggt ist (Direktlink) oder nicht (Link mit redirect_url). Dann mit redirectToUri im Controller umleiten und fertig!
Ich habe das ganze noch etwas optimiert, in dem ich das Plugin auf der umleitenden Seite per TypoScript direkt eingebunden habe, um mir das ganze drumrum zu sparen. Und ich habe einen Link-Generator geschrieben, der Links zu den gewünschten Artikeln generiert. Und das ganze funktioniert hervorragend 😀
Neueste Kommentare