TYPO3: FE-User Sessiondaten mit Typoscript schreiben / auslesen

Neulich wollten wir bei einem Projekt eine höchstmöglich kompatible Methode finden um eine Funktion zur Schriftvergrößerung im Frontend zu realisieren. Dabei sollte aber nicht jede Seite je nach Schriftgröße neu gecacht werden, wie es beim üblichen GET Parameter der Fall wäre.

Nach ausgiebigen Tests haben wir letztendlich entschieden, eine eID Seite zu erstellen, auf der je nach Sessiondaten des Frontend Benutzers dynamisches CSS generiert wird, welches auf der eigentlichen Seite über ein übliches <link> eingebunden wird (also extern). Der Frontend Benutzer muss dazu nicht eingeloggt sein, es funktioniert mit allen Besuchern der Seite.

Dafür muss die Auswahl FE Benutzers jedoch zunächst in die Sessiondaten geschrieben werden. Glücklicherweise stellt TYPO3 dafür eine Funktion zur Verfügung, welche jedoch nicht besonders häufig zum Einsatz kommt und deshalb auf jeden Fall auf die Snippet Datenbank dieses Blogs gehört.

Im Prinzip kann man über ein Formular (<form>) in die Session des Benutzers schreiben, wenn die Eingabefelder einen ganz bestimmten Namen tragen. Hier einfach mal der gesamte Typoscript Code mit dem ein entsprechendes Formular erstellt wird, welches natürlich dank CSS nicht mehr aussieht wie ein herkömmliches Formular.

3 = TEXT
3.wrap = <div class="font_control"> <form method="POST">|</form></div>
3.value (
  <input id="increased" type="submit" value="increased" name="recs[tXs][size]" />
  <input id="default" type="submit" value="default" name="recs[tXs][size]" />
  <input id="small" type="submit" value="small" name="recs[tXs][size]" />
)

Entscheidend ist hierbei lediglich, dass es sich um ein POST Formular handelt und der Name der Eingabefelder – recs[tXs][variablenname] – so aufgebaut ist. (DAS X IN DER MITTE ENTFERNEN! Sonst würde der Synthaxhighlighter es hier als Tag anerkennen)

tXs -> ts !!!

Nachdem Daten in die Session eingetragen worden sind, lässt sich ganz normal über getText im Typoscript auf die Daten zugreifen.

10 = TEXT
10.data = TSFE:fe_user|sesData|recs|ts|variablenname

In dem Script für unsere eID Seite steht übrigens folgendes um per PHP auf die Daten zugreifen zu können:

header("Content-type: text/css", true);

$tsfe = \TYPO3\CMS\Frontend\Utility\EidUtility::initFeUser();

switch($tsfe->sesData['recs']['ts']['size']) {
    case 'small' : $cssState = 'body {font-size: 15px;}'; break;
    case 'increased' : $cssState = 'body {font-size: 22px;}'; break;
    default : $cssState = 'body {font-size: 18px;}'; 
}

echo $cssState;

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Highlighting von Codes ist mit den Tags  [ts], [php], [html], [javascript], [xml] oder [code] möglich.