Typo3: URL statt Link in eigenen Extensions (pi_linkTP_keepPIvars_url)

ei Programmierung von Extensions sollte man zur Generierung von Links die Typo3-Funktionen aus der tslib_pibase nutzen. Bei Erstellung einer neuen Extension bekommt man ein Code-Schnippsel für die Linkerzeugung gleich mitgeliefert, dass bereits zwei verschiedene Funktionen für die Linkerzeugung beinhaltet:

Das erste Beispiel erzeugt die URL für ein Formular (den action-Teil):

$this->pi_getPageLink($GLOBALS['TSFE']->id)

Die zweite Funktion erzeugt einen ganzen Link (a-Tag):

$this->pi_linkToPage('get to this page again',$GLOBALS['TSFE']->id)

Was aber, wenn ich keinen Link, sondern nur die URL haben möchte? Ich könnte pi_getPageLink() verwenden. Was aber, wenn ich noch Parameter ergänzen will?

Am besten die Funktion $this->pi_linkTP_keepPIvars_url($override, $cache, $clearAnyway, $altPageId) nutzen.

Hiermit wird statt eines Links nur die URL erzeugt. Standardmäßig wird eine URL zurückgeliefert, die bereits um die Parameter des Plugins (piVars) erweitert ist.

Beispiel 1: Ein Plugin (myplugin) mit den piVars (controller=abc und action=def) und der PageId=7 würde dann durch Aufruf von $this->pi_linkTP_keepPIvars_url($override, $cache, $clearAnyway, $altPageId) folgendermassen umgesetzt werden:

index.php?id=7&tx_myplugin_pi1[controller]=abc&tx_myplugin_pi1[action]=def

Diese piVars-Variablen kann ich überschreiben (mit einem assoziativen Array) $override.

$override = array(’action’=>’ghi’, ‘number’=>12);

Würde folgende Ausgabe erzeugen:

index.php?id=7&tx_myplugin_pi1[controller]=abc&tx_myplugin_pi1[action]=ghi
&tx_myplugin_pi1[number]=12

Setze ich $clearAnyway=1, erhalte ich bei dem Beispiel folgende Ausgabe:

index.php?id=7&tx_myplugin_pi1[action]=ghi&tx_myplugin_pi1[number]=12

Der piVars-Anteil ist also komplett unterdrückt worden.

Eine Anmerkung zu leeren Parametern: Sie werden aus der Parameterliste gelöscht und sind nicht Bestandteil des Links. Wollte ich also in unserem Beispiel 1 den Paramter “action” aus den piVars löschen, dann müßte das $override-Array wie folgt aussehen: array(’action’=>”).

Das Caching ist standardmäßig eingeschaltet. $cache=0 ergänzt die URL durch den Parameter “&no_cache=1″.

Soll statt der aktuellen Seite ein anderes Ziel angesprungen werden, kann die PageId in $altPageId angegeben werden.

Eine Antwort hinterlassen