Schnellnavigation:

Kategorien

« Mai 2022»
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

Letzte Nachrichten

DSGVO
26.05.2018 18:39
Trackingtools und Datenschutzerklärung
14.03.2014 23:07
1:n und n:1 Relationen in Extbase
06.12.2013 12:04
Erste Abmahnungen wegen Google Analytics
04.10.2013 12:11

Kopieren Sie diesen Link in Ihren RSS-Reader

RSS 0.91Nachrichten
RSS 2.0Nachrichten

In eigener Sache

Peter Linzenkirchner, Lisardo EDV Beratung in Augsburg. Freelance und Partner für Design- und Webagenturen in Augsburg und München. Pixelgenaue Templates, valides HTML, barrierearm. TYPO3-Projekte, Extension-Programmierung und mehr ... 

Zur Zeit wird gefiltert nach: links
Filter zurücksetzen

In Extensions sollten Links generell nicht hart codiert sondern immer mit den Typo3-Funktionen erstellt werden. Der Grund ist einfach: Werden die Links in PHP direkt kofiert, so greifen die Typolink-Funktionen nicht, ausserdem können zusätzliche Parameter nicht durchgeschleift werden. Es gibt eine große Auswahl an Typo3-Funktionen für die Erstellung von Links:

Einfacher Link auf eine interne Seite:

  1. tslib_pibase.pi_getPageLink (
  2.     $id,
  3.     $target = '',
  4.     $urlParameters = array()
  5. );
  6.  
  7. $test = $this->pi_getPageLink (11,'',($this->prefixId=>array('name'=>'wert')) );
  8. // index.php?id=11&tx;_extension_pi1[name]=wert 
  9.  

Parameter

  • integer: PID der Seite auf die der Link verweisen soll
  • string: HTML-Targetarray: weitere Parameter, als Array:
  • array(‘page’=>5,‘irgendwas’=>‘7’)

Man bekommt eine URL zurück. Um den gesamten Link-Text incl. HTML zu erhalten, kann folgende Funktion verwendet werden:

  1. tslib_pibase.pi_linkToPage  (
  2.     $str,
  3.     $id,
  4.     $target = '',
  5.     $urlParameters = array()
  6. );

Die Parameter sind wie oben, allerdings kommt noch ein String hinzu für den Inhalt, der mit dem Link umgeben werden soll. Rückgabewert ist das komplette HTML für den Link.

Link auf die aktuelle Seite mit Cache-Einstellungen und zus. Parametern

  1. tslib_pibase.pi_linkTP  (
  2.     $str,
  3.     $urlParameters = array(),
  4.     $cache = 0,
  5.     $altPageId = 0
  6. );

Parameter

  • string: Der Linktext
  • array: Array mit zusätzlichen URL-Parametern. Diese Parameter werden in Liste der Parameter in der TypoScript-Property “parent.addParams” und $this->pi_moreParams aufgenommen. Bedeutet, dass sie den $this->prefixId String benötigen.
  • boolean: Mit 1 wird die aufgerufene Seite gecacht (durch Anhängen eines &cHash;-Wertes, vorausgesetzt es handelt sich um ein USER_INT). Mit 0 wird ein no_cache-Parameter an den Link angehängt.
  • integer: PID der Zielseite; wenn das nicht angegeben wird, in das Ziel die aktuelle Seite.

Diese Schreibweise kann also auch für Links auf andere Seiten verwendet werden. Da per Voreinstellung auf die aktuelle Seite verlinkt wird, fehlt auch das target. Rückgabewert ist der komplette Link incl. HTML.

Link zur aktuellen Seite, der aktuell
gesetzte piVars erhält bzw. überschreibt

  1. tslib_pibase.pi_linkTP_keepPIvars (
  2.     $str,
  3.     $overrulePIvars = array(),
  4.     $cache = 0,
  5.     $clearAnyway = 0,
  6.     $altPageId = 0
  7. );

Parameter

  • string: der Linktext
  • array: Array zum Überschreiben (und Ergänzen) der aktuellen piVars. Die Variablen werden automatisch dem piVars-Array hinzugefügt; im Gegensatz zu pi_linkTP sollten die Schlüssel also nicht um $this->prefixId erweitert werden, das parriert automatisch. Werte, die sich in diesem Array befinden, überschreiben vorhandene Einträge in piVars. Wenn der Wert eines Schlüssels leer ist (leerer String), dann wird dieser Wert aus dem piVArs-Array entfernt.
  • boolean: Mit 1 wird die aufgerufene Seite gecacht (durch Anhängen eines &cHash;-Wertes, vorausgesetzt es handelt sich um ein USER_INT). Mit 0 wird ein no_cache-Parameter an den Link angehängt.
  • boolean: Wenn dieser Wert gesetzt wird, so bleibt der Inhalt der piVars nicht erhalten. Praktisch, um piVars zu definieren, ohne auf den prefix zu achten. Insbesondere beim Action-Link von Formularen sinnvoll, sonst bleiben bei wiederholten Formularaufrufen einmal gesetzte Werte von Checkboxen oder Radioboxen erhalten.
  • integer: PID der Zielseite; wenn das nicht angegeben wird, in das Ziel die aktuelle Seite.

Rückgabewert ist der gesamte Link mit den Tags. Um nur die URL zu erhalten, folgende Funktion verwenden:

  1. tslib_pibase.pi_linkTP_keepPIvars_url (
  2.     $overrulePIvars = array(),
  3.     $cache = 0,
  4.     $clearAnyway = 0,
  5.     $altPageId = 0
  6. );

Grundlage: der Typolink

Letzlich rufen die obigen Funktionen nach einigen Manipulationen die folgenden Funktionen auf:

  1. tslib_cObj.typoLink ( $linktxt, $conf ) ;
  2. // oder
  3. tslib_cObj.typoLink_URL ( $conf );

Diese Funktion ermöglicht die Konfiguration und Erweiterung der Links über die Typolink-Optionen von TypoScript. Sie sollte nie übergangen werden.

Links auf Seiten mit Inhalten aus anderen Extensions

Die obigen Techniken finden Anwendung, wenn in einer Extension Links verwendet werden, die wiederum Inhalte der eigenen Extension aufrufen. Oft müssen aber Links eingebaut werden, die Inhalt von fremden Extensions aufrufen und dazu die Parameter der fremden Extension übergeben müssen. Auch diese Links müssen richtig aufgebaut werden und vor allem für das Caching den cHashe-Parameter enthalten.

Hier ist ein Beispiel, wie das aussehen kann:

  1. $url=$this->cObj->typoLink_URL(
  2.     array(
  3.           'parameter'=>29,
  4.           'useCacheHash'=>true,
  5.           'additionalParams'=>'&tx;_ttnews[cat]='.$linkUid
  6.       )
  7. );

Man erkennt ohne Probleme die Syntax des Typolinks darin.

Übergabe-Variablen korrekt abfragen und verarbeiten

Die Globalen GET und POST sollten nie direkt abgefragt werden, sondern immer über die folgenden API-Funktionen. Die Übergabe-Variable “var” kann benutzt werden, um Teile des Arrays abzufragen. Das Beispiel liefert ein Array aller GET-Parameter von tt_news.

  1. # GET abfragen
  2. t3lib_div._GET ( $var = NULL )
  3. # POST
  4. t3lib_div._POST ( $var = NULL )   
  5. # Beides
  6. t3lib_div._GP( $var = NULL) 
  7. # Beispiel
  8. t3lib_div._GET ( 'tx_ttnews' )

Weiterleitungen

Sollten ebenfalls für Typolinks erfolgen; hier z. B. zusätzlich über eine PID aus dem Config-Array:

  1. header('Location:'.t3lib_div::locationHeaderUrl($this->pi_getPageLink($this->conf['pid'])));

Weiterführende Links

Typo3 Dokumentation: Darin suchen nach »tslib_pibase«.
tslib_pibase Class Reference: (Achtung: geht ausserhalb seines Framesets auf).

Kategorien: API/Extensions  Kommentare 0
Tags: links, extension, api