Typo3 Extensions programmieren - Snippets: Unterschied zwischen den Versionen
| Zeile 23: | Zeile 23: | ||
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 | + | == Session Variablen in Typo3 == |
| − | Session Variablen | + | 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->setKey("ses","$data", "$zustand"); | ||
$GLOBALS["TSFE"]->fe_user->storeSessionData(); | $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. | 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 | + | Default expire-time: 24h |
=== Funktionen === | === Funktionen === | ||
| Zeile 52: | Zeile 56: | ||
} | } | ||
</pre> | </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) | $GLOBALS["TSFE"]->fe_user->setKey(type, key, data) | ||
| − | "type" | + | "type" ist wieder "user" oder "ses". |
| − | "key" | + | "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) | Note that the key "recs" is reserved for the built-in "shopping-basket". As is "sys" (for TYPO3 standard modules and code) | ||
| − | "data" | + | "data" ist der Wert der Variablen die gespeichert werden sollen. Arrays oder normale Skalare (einfache Variablen). |
'''Example:''' | '''Example:''' | ||
Version vom 1. August 2008, 08:25 Uhr
Templates
Template Code holen
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
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
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
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:
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!