Typo3 Extensions programmieren - Snippets: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
Zeile 33: Zeile 33:
 
In Typo3 gibt es Standardmäßig 2 Sessions die man nutzen kann.
 
In Typo3 gibt es Standardmäßig 2 Sessions die man nutzen kann.
  
User data => Eingeloggter User. Kein Zugriff mehr wenn ausgeloggt.
+
'''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: 24h
 
Default expire-time: 24h

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:

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

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!