Typo3 Extensions programmieren - Snippets: Unterschied zwischen den Versionen
Kholja (Diskussion | Beiträge) |
|||
| (16 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt) | |||
| Zeile 10: | Zeile 10: | ||
</pre> | </pre> | ||
| − | === Saubere Links erzeugen === | + | === Saubere Links in Extensions erzeugen === |
Kommentar von Elmar Hinz: | Kommentar von Elmar Hinz: | ||
| Zeile 22: | Zeile 22: | ||
http://t3flyers.wordpress.com/2006/09/11/a-quick-guide-to-proper-caching-with-tslib_pibase-episode-1/ | http://t3flyers.wordpress.com/2006/09/11/a-quick-guide-to-proper-caching-with-tslib_pibase-episode-1/ | ||
| + | |||
| + | == Session Variablen in Typo3 == | ||
| + | Mit Hilfe von Sessions kann man Benutzerbezogene Daten speichern, ohne daß Parameter per Get oder Post übertragenwerden müssen. Auch Seiten über Links etc. neu geladen werden. | ||
| + | |||
| + | Im Prinzip kann man Session Variablen folgendermaßen spreichern. | ||
| + | $GLOBALS["TSFE"]->fe_user->setKey("ses","$data", "$zustand"); | ||
| + | $GLOBALS["TSFE"]->fe_user->storeSessionData(); | ||
| + | |||
| + | === Benutzer-Session oder Browser-Session === | ||
| + | In Typo3 gibt es Standardmäßig 2 Sessions die man nutzen kann. | ||
| + | |||
| + | '''User data''' => Eingeloggter User. Kein Zugriff mehr wenn ausgeloggt. | ||
| + | |||
| + | '''Session data''' => Jeder User. Eingeloggt oder nicht. Daten sind an die "browsing-session" gebunden und nicht an die user-id. Bleibt erhalten bis der Browser geschlossen wird. | ||
| + | |||
| + | Default expire-time: 24h | ||
| + | |||
| + | === Mit Session und Token überprüfen ob Benutzer eine Formularseite nochmal neu geladen hat === | ||
| + | Manchmal ist es nützlich zu wissen ob der Benutzer mittels reload Button oder den Navigationsbuttons die Seite neu aufgerufen hat oder diese nach dem Absenden eines Formulars erreicht hat. Nach dem Senden will man evtl. Werte in der Datenbank speichern, aber dies nicht mehr tun, wenn der Benutzer Reload gedrückt hat. Mit einem Trick kann man dies verhindern. | ||
| + | |||
| + | # Man erzeugt ein Token mit einem Hash-Wert und speichert diesen in der Session und zudem als Verstecktes Feld im Formular. | ||
| + | # Nach Absenden des Formulars vergleicht man den Post-Wert mit der Session. Wenn diese gleich sind ist alles in Ordnung. Danach erzeugt man ein neues Token und speichert es wieder in der Session. Wenn der Nutzer die Seite mit Reload nocheinmal lädt stimmt das Session Token mit dem Post Wert nicht mehr überein, dieser hat sich ja nicht verändert. Der Session Wert hingegen schon. | ||
| + | |||
| + | Beispiel: | ||
| + | <pre> | ||
| + | // Session | ||
| + | $this->sesData = array(); | ||
| + | $this->sesData = $GLOBALS["TSFE"]->fe_user->getKey('ses',"sesData"); | ||
| + | // Token Vergleich | ||
| + | $this->sesData = $GLOBALS["TSFE"]->fe_user->getKey("ses","sesData"); | ||
| + | $this->is_reloaded = $this->is_reloaded(); | ||
| + | // Neues Token in Session speichern | ||
| + | $this->sesData['token'] = hash('md5',mktime()); | ||
| + | $GLOBALS["TSFE"]->fe_user->setKey('ses',"sesData", $this->sesData); | ||
| + | $GLOBALS["TSFE"]->storeSessionData(); | ||
| + | |||
| + | ... | ||
| + | |||
| + | // Token in verstecktes Feld speichern | ||
| + | <input type="hidden" method="post" name="'.$this->prefixId.'[token]" value="'.$this->sesData['token'].'"> | ||
| + | ... | ||
| + | |||
| + | // Check if last token fits piVarToken then page is not reloaded | ||
| + | function is_reloaded(){ | ||
| + | if(!empty($this->piVars['token'])){ | ||
| + | if($this->piVars['token'] == $this->sesData['token']){ | ||
| + | $reloaded = 0; // if piVar fits last session token everything is alright | ||
| + | }else{ | ||
| + | $reloaded = 1; | ||
| + | } | ||
| + | } else $reloaded = 0;//no piVar => page is fresh | ||
| + | return $reloaded; | ||
| + | } | ||
| + | ... | ||
| + | </pre> | ||
| + | === Funktionen === | ||
| + | $GLOBALS["TSFE"]->fe_user->getKey(type, key) | ||
| + | |||
| + | "'''type'''" Entweder "user" or "ses", definiert den Namensraum (data-space), user-session oder browsing-session (siehe oben) | ||
| + | |||
| + | "'''key'''" der "name" unter dem die Daten gespeichert werden. Arrays oder Scalars. | ||
| + | |||
| + | Note that the key "recs" is reserved for the built-in "shopping-basket". As is "sys" (for TYPO3 standard modules and code) | ||
| + | |||
| + | '''Example:''' | ||
| + | <pre> | ||
| + | if ($GLOBALS["TSFE"]->loginUser){ | ||
| + | $myData = $GLOBALS["TSFE"]->fe_user->getKey("user","myData"); | ||
| + | } else { | ||
| + | $myData = $GLOBALS["TSFE"]->fe_user->getKey("ses","myData"); | ||
| + | } | ||
| + | </pre> | ||
| + | Liest die Benutzerdaten (user) mit dem Schlüssel "myData". Wenn kein Benutzer eingeloggt ist werden die Daten aus der Browser Session verwendet. | ||
| + | |||
| + | '''Daten Speichern''' | ||
| + | $GLOBALS["TSFE"]->fe_user->setKey(type, key, data) | ||
| + | |||
| + | "type" ist wieder "user" oder "ses". | ||
| + | |||
| + | "key" ist der Name oder auch Schlüssel unter dem die Daten gespeichert werden. | ||
| + | |||
| + | Note that the key "recs" is reserved for the built-in "shopping-basket". As is "sys" (for TYPO3 standard modules and code) | ||
| + | |||
| + | "data" ist der Wert der Variablen die gespeichert werden sollen. Arrays oder normale Skalare (einfache Variablen). | ||
| + | |||
| + | '''Example:''' | ||
| + | <pre> | ||
| + | $myConfig["name"] = "paul"; | ||
| + | $myConfig["address"] = "Main street"; | ||
| + | $GLOBALS["TSFE"]->fe_user->setKey("ses","myData", $myConfig); | ||
| + | </pre> | ||
| + | |||
| + | This stores the array $myConfig under the key "myData" in the session-data. This lasts as long as "paul" is surfing the site! | ||
| + | |||
| + | === Beispiel Prüfen ob Seite aktualisiert wurde === | ||
| + | Manchmal ist es notwendig zu prüfen ob eine Seite mit einem Formular mit dem Submit-Button abgesendet wurde, oder ob die Daten durch Klick auf den Reload Button des Browsers nochmal aufgerufen wurde. In diesem Fall sollten etwa Berechnungen mit den Formulardaten nicht noch einmal ausgeführt werden. | ||
| + | Mit einer Session läßt sich das lösen: | ||
| + | |||
| + | Session initialisieren | ||
| + | <pre> | ||
| + | // User Session (bei Login) oder "normale" Session nutzen | ||
| + | |||
| + | $this->sesData = array(); | ||
| + | ($GLOBALS["TSFE"]->loginUser)?{$this->sesType = "user":$this->sesType = "ses"; | ||
| + | $this->sesData = $GLOBALS["TSFE"]->fe_user->getKey($this->sesType,"sesData"); | ||
| + | </pre> | ||
| + | |||
| + | Wenn ein Formular abgeschickt wird, dann senden wir einen Wert mit, der sich immer verändert. | ||
| + | <pre> | ||
| + | $content .= '<input type="hidden" name="'.$this->prefixId.'[token]" value="'.hash("md5",time()).'" />!; | ||
| + | </pre> | ||
| + | |||
| + | Mit dieser Funktion wird bei jedem Abruf festgestellt, ob der im Formular übermittelte Wert in der Session existiert. Falls nicht wird er in der Session gespeichert, die Seite wurde nicht durch klicken auf Reload generiert. Klickt der User hingegen auf Reload, wird der alte Formular Wert noch einmal übermittelt. In diesem Fall stimmt er mit dem beim ersten Aufruf gespeicherten "Token" Wert überein. | ||
| + | |||
| + | <pre> | ||
| + | function is_reloaded(){ | ||
| + | if(!empty($this->piVars['token'])){ | ||
| + | if($this->piVars['token'] == $this->sesData['token']){ | ||
| + | $reloaded = 1; | ||
| + | $this->piVars = array(); | ||
| + | }else{ | ||
| + | $reloaded = 0; | ||
| + | $this->sesData['token'] = $this->piVars['token']; | ||
| + | $GLOBALS["TSFE"]->fe_user->setKey($this->sesType,"sesData", $this->sesData); | ||
| + | } | ||
| + | } else $reloaded = 1; | ||
| + | return $reloaded; | ||
| + | } | ||
| + | </pre> | ||
| + | |||
| + | == Größe von Dateien lesbar ausgeben == | ||
| + | Aus Typo3 Adventskalender 2008 von Tim Lochmüller | ||
| + | röße von Dateien ausgeben, jedoch speichert TYPO3 diese Dateigrößen in der Regel in Bytes. Um nun eine für den normalen Menschen lesbare Ausgabe zu bekommen, bietet die Klasse t3lib_div eine nette Funktion zur Formatierung: | ||
| + | |||
| + | t3lib_div::formatSize($sizeInBytes, $labels=''); | ||
| + | |||
| + | Während sich der erste Parameter wie ich denke von selbst erklärt, bedarf der zweite eine kurze Erläuterung. Der zweite Parameter ist eine durch "|"-Zeichen separierte Liste von Labels für Bytes, Kilobytes, Megabytes und Gigabytes. Der Standard ist " | K| M| G". In Deutschland zumindest ist man eine andere Schreibweise gewohnt, also gleich mal ein Beispiel: | ||
| + | |||
| + | $fileSize1 = 370 | ||
| + | $fileSize2 = 378880 | ||
| + | $fileSize3 = 387973120 | ||
| + | $fileSize4 = 397284474880 | ||
| + | |||
| + | echo t3lib_div::formatSize($fileSize1, $labels=' Bytes | KB | MB | GB'); | ||
| + | // Ausgabe: 370 Bytes | ||
| + | echo t3lib_div::formatSize($fileSize2, $labels=' Bytes | KB | MB | GB'); | ||
| + | // Ausgabe: 370 KB | ||
| + | echo t3lib_div::formatSize($fileSize3, $labels=' Bytes | KB | MB | GB'); | ||
| + | // Ausgabe: 370 MB | ||
| + | echo t3lib_div::formatSize($fileSize4, $labels=' Bytes | KB | MB | GB'); | ||
| + | // Ausgabe: 370 GB | ||
| + | |||
| + | == Auf die TypoScript Konfiguration einer anderen Extension zugreifen == | ||
| + | Auf TSconf einer anderen Extension zugreifen | ||
| + | |||
| + | Wenn man in einer Extension auf den TypoScript-Setupteil einer anderen Extension zugreifen möchte und im TypoScript-Code die Variablen nicht mehrfach aufführen möchte, kann man dies mit folgender Zeile machen: | ||
| + | |||
| + | $extConf = $GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_MYEXT_pi1.'] | ||
| + | |||
| + | Dadurch erhält man den kompletten conf-Teil der Extension. Einzelne Variablen bzw. Bereiche erhält man, wenn man die Variable mit [VAR] anhängt. | ||
| + | |||
| + | (Quelle: Typo3 Snippets Juni 2009) | ||
| + | siehe auch: http://www.lisardo.biz/wiki/GLOBALS-TSFE/ | ||
| + | |||
| + | == Wo finde ich was == | ||
| + | === Das Globale TSFE Objekt === | ||
| + | Über GLOBAL[‘TSFE’] kann man bei der Extension-Programmierung mehr oder weniger auf das gesamte TypoScript-Setup von Typo3 zugreifen. Man kann aktuelle Konfigurationen abfragen oder auch ändern, so dass sich die Ausgabe ins Frontend abhängig vom installierten Plugin auf jeder Seite ändern kann. | ||
| + | |||
| + | Zum Beispiel können damit zusätzliche JavaScript- oder CSS-Definitionen im Kopfbereich ausgegeben werden (siehe CSS und JavaScript im Kopfbereich ausgeben) oder der Bodytag erweitert werden. Folgende Zeile fügt z. B. auf jeder Seite, auf der das Plugin installiert wirde, dem Body-Tag einen onload-Befehl hinzu, wie er für Google-Maps benötigt wird: | ||
| + | |||
| + | * Sessions | ||
| + | * Datenbankabfragen | ||
| + | * Zusätzliche Header Daten | ||
| + | * vieles Mehr | ||
| + | |||
| + | [[TYPO3 - TSFE Objekt]] | ||
| + | |||
| + | === Das Content Objekt cObj === | ||
| + | Hiermit kann man quasi auf alle Informationen und Inhalte der dazugehörigen übergeordneten Seite zugreifen. | ||
| + | |||
| + | Außerdem kapselt es den Zugriff auf die Funktionen die auch per TypoScript zur Verfügung stehen. | ||
| + | |||
| + | Beispiel Inhalte auslesen: | ||
| + | $content = $this->cObj->data['header']; | ||
| + | |||
| + | Beispiel auf Seiteneigenschaften zugreifen | ||
| + | $content = $this->cObj->parentRecord['data']['title'] | ||
| + | |||
| + | Mal durchschauen: Die Klasse tslib_cObj in der Systemextension cms | ||
| + | |||
| + | === Nützliche Funktionen aus t3lib === | ||
| + | Beispiele: | ||
| + | |||
| + | t3lib_extMgm::extRelPath($this->extKey) | ||
| + | |||
| + | == Pfade == | ||
| + | === Konstanten nutzen === | ||
| + | Beispiele: | ||
| + | <pre> | ||
| + | require_once (PATH_tslib . 'class.tslib_pibase.php'); | ||
| + | require_once (t3lib_extMgm::extPath('tt_news') . 'lib/class.tx_ttnews_catmenu.php'); | ||
| + | </pre> | ||
Aktuelle Version vom 16. Mai 2012, 18:18 Uhr
Templates[Bearbeiten]
Template Code holen[Bearbeiten]
function getTemplateCode($mySubpart){
$tsTemplateFile = $this->conf['templateFile'];
// Wenn Flextemplate dann code aus diesem, sonst aus TS
$this->flexConf['template'] ? $templateCode = this->cObj->fileResource("uploads/tx_".$this->extKey."/".$this->flexConf['template']) : $templateCode=$this->cObj->fileResource($tsTemplateFile);
return $templateCode;
}
Saubere Links in Extensions erzeugen[Bearbeiten]
Kommentar von Elmar Hinz:
Die Linkfunktionen der tslib_pibase sind nicht garade eine Hilfe. 2/3 davon streichen und die Extension wird 1/3 besser. Wenn Du Dich allein auf die Funktion pi_linkTP_keepPIvars konzentrierst, kannst du damit aber fast alles stemmen. Noch konsequenter wendest du gleich selbst die zugrundeliegende typolink Funktion an.
Das Thema mit dem Fokus auf ein sauberes Caching hier:
Session Variablen in Typo3[Bearbeiten]
Mit Hilfe von Sessions kann man Benutzerbezogene Daten speichern, ohne daß Parameter per Get oder Post übertragenwerden müssen. Auch Seiten über Links etc. neu geladen werden.
Im Prinzip kann man Session Variablen folgendermaßen spreichern.
$GLOBALS["TSFE"]->fe_user->setKey("ses","$data", "$zustand");
$GLOBALS["TSFE"]->fe_user->storeSessionData();
Benutzer-Session oder Browser-Session[Bearbeiten]
In Typo3 gibt es Standardmäßig 2 Sessions die man nutzen kann.
User data => Eingeloggter User. Kein Zugriff mehr wenn ausgeloggt.
Session data => Jeder User. Eingeloggt oder nicht. Daten sind an die "browsing-session" gebunden und nicht an die user-id. Bleibt erhalten bis der Browser geschlossen wird.
Default expire-time: 24h
Mit Session und Token überprüfen ob Benutzer eine Formularseite nochmal neu geladen hat[Bearbeiten]
Manchmal ist es nützlich zu wissen ob der Benutzer mittels reload Button oder den Navigationsbuttons die Seite neu aufgerufen hat oder diese nach dem Absenden eines Formulars erreicht hat. Nach dem Senden will man evtl. Werte in der Datenbank speichern, aber dies nicht mehr tun, wenn der Benutzer Reload gedrückt hat. Mit einem Trick kann man dies verhindern.
- Man erzeugt ein Token mit einem Hash-Wert und speichert diesen in der Session und zudem als Verstecktes Feld im Formular.
- Nach Absenden des Formulars vergleicht man den Post-Wert mit der Session. Wenn diese gleich sind ist alles in Ordnung. Danach erzeugt man ein neues Token und speichert es wieder in der Session. Wenn der Nutzer die Seite mit Reload nocheinmal lädt stimmt das Session Token mit dem Post Wert nicht mehr überein, dieser hat sich ja nicht verändert. Der Session Wert hingegen schon.
Beispiel:
// Session
$this->sesData = array();
$this->sesData = $GLOBALS["TSFE"]->fe_user->getKey('ses',"sesData");
// Token Vergleich
$this->sesData = $GLOBALS["TSFE"]->fe_user->getKey("ses","sesData");
$this->is_reloaded = $this->is_reloaded();
// Neues Token in Session speichern
$this->sesData['token'] = hash('md5',mktime());
$GLOBALS["TSFE"]->fe_user->setKey('ses',"sesData", $this->sesData);
$GLOBALS["TSFE"]->storeSessionData();
...
// Token in verstecktes Feld speichern
<input type="hidden" method="post" name="'.$this->prefixId.'[token]" value="'.$this->sesData['token'].'">
...
// Check if last token fits piVarToken then page is not reloaded
function is_reloaded(){
if(!empty($this->piVars['token'])){
if($this->piVars['token'] == $this->sesData['token']){
$reloaded = 0; // if piVar fits last session token everything is alright
}else{
$reloaded = 1;
}
} else $reloaded = 0;//no piVar => page is fresh
return $reloaded;
}
...
Funktionen[Bearbeiten]
$GLOBALS["TSFE"]->fe_user->getKey(type, key)
"type" Entweder "user" or "ses", definiert den Namensraum (data-space), user-session oder browsing-session (siehe oben)
"key" der "name" unter dem die Daten gespeichert werden. Arrays oder Scalars.
Note that the key "recs" is reserved for the built-in "shopping-basket". As is "sys" (for TYPO3 standard modules and code)
Example:
if ($GLOBALS["TSFE"]->loginUser){
$myData = $GLOBALS["TSFE"]->fe_user->getKey("user","myData");
} else {
$myData = $GLOBALS["TSFE"]->fe_user->getKey("ses","myData");
}
Liest die Benutzerdaten (user) mit dem Schlüssel "myData". Wenn kein Benutzer eingeloggt ist werden die Daten aus der Browser Session verwendet.
Daten Speichern
$GLOBALS["TSFE"]->fe_user->setKey(type, key, data)
"type" ist wieder "user" oder "ses".
"key" ist der Name oder auch Schlüssel unter dem die Daten gespeichert werden.
Note that the key "recs" is reserved for the built-in "shopping-basket". As is "sys" (for TYPO3 standard modules and code)
"data" ist der Wert der Variablen die gespeichert werden sollen. Arrays oder normale Skalare (einfache Variablen).
Example:
$myConfig["name"] = "paul";
$myConfig["address"] = "Main street";
$GLOBALS["TSFE"]->fe_user->setKey("ses","myData", $myConfig);
This stores the array $myConfig under the key "myData" in the session-data. This lasts as long as "paul" is surfing the site!
Beispiel Prüfen ob Seite aktualisiert wurde[Bearbeiten]
Manchmal ist es notwendig zu prüfen ob eine Seite mit einem Formular mit dem Submit-Button abgesendet wurde, oder ob die Daten durch Klick auf den Reload Button des Browsers nochmal aufgerufen wurde. In diesem Fall sollten etwa Berechnungen mit den Formulardaten nicht noch einmal ausgeführt werden. Mit einer Session läßt sich das lösen:
Session initialisieren
// User Session (bei Login) oder "normale" Session nutzen
$this->sesData = array();
($GLOBALS["TSFE"]->loginUser)?{$this->sesType = "user":$this->sesType = "ses";
$this->sesData = $GLOBALS["TSFE"]->fe_user->getKey($this->sesType,"sesData");
Wenn ein Formular abgeschickt wird, dann senden wir einen Wert mit, der sich immer verändert.
$content .= '<input type="hidden" name="'.$this->prefixId.'[token]" value="'.hash("md5",time()).'" />!;
Mit dieser Funktion wird bei jedem Abruf festgestellt, ob der im Formular übermittelte Wert in der Session existiert. Falls nicht wird er in der Session gespeichert, die Seite wurde nicht durch klicken auf Reload generiert. Klickt der User hingegen auf Reload, wird der alte Formular Wert noch einmal übermittelt. In diesem Fall stimmt er mit dem beim ersten Aufruf gespeicherten "Token" Wert überein.
function is_reloaded(){
if(!empty($this->piVars['token'])){
if($this->piVars['token'] == $this->sesData['token']){
$reloaded = 1;
$this->piVars = array();
}else{
$reloaded = 0;
$this->sesData['token'] = $this->piVars['token'];
$GLOBALS["TSFE"]->fe_user->setKey($this->sesType,"sesData", $this->sesData);
}
} else $reloaded = 1;
return $reloaded;
}
Größe von Dateien lesbar ausgeben[Bearbeiten]
Aus Typo3 Adventskalender 2008 von Tim Lochmüller röße von Dateien ausgeben, jedoch speichert TYPO3 diese Dateigrößen in der Regel in Bytes. Um nun eine für den normalen Menschen lesbare Ausgabe zu bekommen, bietet die Klasse t3lib_div eine nette Funktion zur Formatierung:
t3lib_div::formatSize($sizeInBytes, $labels=);
Während sich der erste Parameter wie ich denke von selbst erklärt, bedarf der zweite eine kurze Erläuterung. Der zweite Parameter ist eine durch "|"-Zeichen separierte Liste von Labels für Bytes, Kilobytes, Megabytes und Gigabytes. Der Standard ist " | K| M| G". In Deutschland zumindest ist man eine andere Schreibweise gewohnt, also gleich mal ein Beispiel:
$fileSize1 = 370
$fileSize2 = 378880
$fileSize3 = 387973120
$fileSize4 = 397284474880
echo t3lib_div::formatSize($fileSize1, $labels=' Bytes | KB | MB | GB');
// Ausgabe: 370 Bytes
echo t3lib_div::formatSize($fileSize2, $labels=' Bytes | KB | MB | GB');
// Ausgabe: 370 KB
echo t3lib_div::formatSize($fileSize3, $labels=' Bytes | KB | MB | GB');
// Ausgabe: 370 MB
echo t3lib_div::formatSize($fileSize4, $labels=' Bytes | KB | MB | GB');
// Ausgabe: 370 GB
Auf die TypoScript Konfiguration einer anderen Extension zugreifen[Bearbeiten]
Auf TSconf einer anderen Extension zugreifen
Wenn man in einer Extension auf den TypoScript-Setupteil einer anderen Extension zugreifen möchte und im TypoScript-Code die Variablen nicht mehrfach aufführen möchte, kann man dies mit folgender Zeile machen:
$extConf = $GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_MYEXT_pi1.']
Dadurch erhält man den kompletten conf-Teil der Extension. Einzelne Variablen bzw. Bereiche erhält man, wenn man die Variable mit [VAR] anhängt.
(Quelle: Typo3 Snippets Juni 2009) siehe auch: http://www.lisardo.biz/wiki/GLOBALS-TSFE/
Wo finde ich was[Bearbeiten]
Das Globale TSFE Objekt[Bearbeiten]
Über GLOBAL[‘TSFE’] kann man bei der Extension-Programmierung mehr oder weniger auf das gesamte TypoScript-Setup von Typo3 zugreifen. Man kann aktuelle Konfigurationen abfragen oder auch ändern, so dass sich die Ausgabe ins Frontend abhängig vom installierten Plugin auf jeder Seite ändern kann.
Zum Beispiel können damit zusätzliche JavaScript- oder CSS-Definitionen im Kopfbereich ausgegeben werden (siehe CSS und JavaScript im Kopfbereich ausgeben) oder der Bodytag erweitert werden. Folgende Zeile fügt z. B. auf jeder Seite, auf der das Plugin installiert wirde, dem Body-Tag einen onload-Befehl hinzu, wie er für Google-Maps benötigt wird:
- Sessions
- Datenbankabfragen
- Zusätzliche Header Daten
- vieles Mehr
Das Content Objekt cObj[Bearbeiten]
Hiermit kann man quasi auf alle Informationen und Inhalte der dazugehörigen übergeordneten Seite zugreifen.
Außerdem kapselt es den Zugriff auf die Funktionen die auch per TypoScript zur Verfügung stehen.
Beispiel Inhalte auslesen:
$content = $this->cObj->data['header'];
Beispiel auf Seiteneigenschaften zugreifen
$content = $this->cObj->parentRecord['data']['title']
Mal durchschauen: Die Klasse tslib_cObj in der Systemextension cms
Nützliche Funktionen aus t3lib[Bearbeiten]
Beispiele:
t3lib_extMgm::extRelPath($this->extKey)
Pfade[Bearbeiten]
Konstanten nutzen[Bearbeiten]
Beispiele:
require_once (PATH_tslib . 'class.tslib_pibase.php');
require_once (t3lib_extMgm::extPath('tt_news') . 'lib/class.tx_ttnews_catmenu.php');