Ansehen newloginbox redirect
Die newloginbox unterstützt eine Weiterleitung entweder an den Referrer oder an eine URL, die über einen Link-Parameter übergeben wird. Beides ist in der Konfiguration aber sehr kompliziert, wenn es sich bei der Weiterleitung nicht um eine einfache Seite handelt sondern zusätzlich Parameter übergeben werden müssen. Die Redirect-Funktion der newloginbox schneidet die URLs nämlich beim ersten & ab.
newloginbox aktzeptiert einen URL-Parameter namens redirect_url, wenn die Seite mit der Loginbox aufgerufen wird, allerdings nur dann, wenn keine Referrer-Domains defniert wurden. Dieser Parameter überschreibt den Referrer.
Allerdings muss dieser Parameter auf bestimmte Art angehängt werden:
- als letzter (sonst funktioniert der Link nicht)
- nicht im Namensraum der Extension sondern direkt
Also geht das:
http://www.111111.de/index.php?id=11&redirect_url=index.php?id=12
aber das nicht:
http://www.111111.de/index.php?id=11&tx_extension_pi1[redirect_url]=index.php?id=12
Das ist unangenehm, da man die Typolink-Funktionen nicht mehr richtig nutzen kann.
Aber es geht noch weiter. Wenn man mehr als einen Parameter übergeben muss, so stellt sich heraus, dass die redirect_url ab dem ersten & abgeschnitten wird. Das hier:
http://www.111111.de/index.php?id=11&tx_extension_pi1[redirect_url]=index.php?id=12&uid=23
ergibt als Redirect nur index.php?id=12.
Sehr schlecht. Aber man kann einen Trick benutzen, nämlich die & Zeichen durch ihr ASCII-Äquivalent ersetzen. Das geht:
http://www.111111.de/index.php?id=11&tx_extension_pi1[redirect_url]=index.php?id=12&uid=23
Da ich das Login auf der Seite brauche, auf der sich die Besucher gerade befinden und dabei einen langen Suchstring übergeben muss wird die Sache kompliziert. Ich mache es jetzt etwa so:
# Das hier liefert eine Variante von $this->piVars, ergänzt
# um die uid und reduziert um einige andere (eine Funktion, die hier keine Rolle
# spielt. Man kann auch einfach $this->piVars einsetzen.
$aktPiVars = $this->p_aktPiVars(array('uid'=>$value['uid']));
# die URL wie üblich:
$url = $this->pi_linkTP_keepPIvars_url($aktPiVars, 1, 1, $this->conf['pidSingle']);
# Redirect-URL:
$redirect_url = '&redirect_url=index.php?id='.$this->conf['pidSingle'];
# die & raus und um die $aktPiVars ergänzen
$redirect_url .= str_replace('&', '&', t3lib_div::implodeArrayForUrl( 'tx_lisimmo_pi1',$aktPiVars,'',0,0) );
# die URL komplettieren
$url .= $redirect_url;
# ins Array
$wrappedSubpartArray['###LINK_ITEM###'] = array("<a href=\"$url\">", "</a>");
Category:Typo3 -> Extensions -> Programmierung
Category:Typo3 -> Extensions -> newloginbox