Webdesign Berlin
< Seitentitel in TYPO3 und Suchmaschinenoptimierung

stdWrap verwenden und erweitern - Handout zum Vortrag

24.04.2010


stdWrap erweitern
Bild: Rainer Sturm, pixelio.de

StdWrap ist eine Sammlung von Hilfsfunktionen in TypoScript, mit der verschiedene Datenquellen ausgelesen, die Daten überprüft und verarbeitet werden können.

StdWrap gehört wie so viele Funtkionen nicht zum eigentlichen TYPO3 Core, sondern zu der Sysextension „cms“. StdWrap liegt als Funktion in der Klasse „tslib_cObj“, welche entgegen der heute geltenden Namenskonventionen aus historischen Gründen in folgender Datei zu finden ist:

typo3/sysext/cms/tslib/class.tslib_content.php

Innerhalb der Funktion stdWrap werden zum Teil direkt PHP-Funktionen mit den entsprechenden Daten aus den Parametern gefüttert, teil weitere TYPO3-Api Funktionen aufgerufen. Haupteingabe und Ausgabe ist ein String, der durchgeschleust und durch zusätzliche Parameter  verarbeitet wird ($content).

#Stark gekürzt
function stdWrap($content,$conf)
{
         if ($conf['trim']) { $content=trim($content); }
         if ($conf['insertData']) {$content = $this->insertData($content);}
         return $content;
 }

Die Hilfsfunktonen innerhalb von stdWrap können in 3 Bereiche unterteilt werden:

Informationen holen, z.B:

  • field
  • cObject
  • data
  • current

Informationen überprüfen, z.B:

  • override
  • ifEmpty
  • required
  • if

Daten verarbeiten, z.B:

  • intval
  • wrap
  • insertData

Die Funktionen können kombiniert werden. Sie werden immer in der Reihenfolge abgearbeitet, die im SourceCode in tslib_cObj:stdWrap() definiert wurde. Die Definitionsreheinfolge in der TypoScript Konfiguration ist dagegen nicht von Bedeutung. Die Ausführreihenfolge der Funktionen kann durch Rekursiven Aufruf (stdWrap.stdWrap) beeinflusst werden.

Beispiel: Aufruf des Titels einer News, deren ID als Get-Variable übergeben wurde:

lib.myNewsTitle = TEXT lib.myNewsTitle {  
  dataWrap = DB:tt_news:{GPvar:tx_ttnews|tt_news}:title  
  wrap3 = {|}  
  insertData = 1

 

Erklärung: 

dataWrap = DB:tt_news:{GPvar:tx_ttnews|tt_news}:title  

Ersetzt {GPvar:tx_ttnews|tt_news} durch die entsprechende uid, z.B. 16. Danach ist $content = DB:tt_news:16:title

wrap3 = {|}  

wrapt $content mit geschwungenen Klammern, $content = {DB:tt_news:16:title}.  

insertData = 1 

Ersetzt nun alle Inhalte von geschwungenen Klammern durch das entsprechende Ergebnis von getText, ließt in diesem Fall also den Titel der entsprechenden News aus.

stdWrap selbst erweitern

Es gibt drei Möglichkeiten, stdWrap so benötigt zu erweitern. Anwendungszwecke sind z.B. das bereitstellen weiterer PHP Funktionen, auch aus externen Bibliotheken, das einfache Bereitstellenvon Funktionen eigener Extensions etc.

Quick & Dirty: userFuncs in stdWrap

StdWrap stelllt zwei Möglichkeiten UserFuncs einzubinden zur Verfügung: die preUserFunc  direktnach dem Einlesen der Daten noch vor deren überprüfung durch ifEmpty etc und die postUserFunc nach allen anderen Funktionen außer debugging Ausgaben etc.

Veraltet: stdWrap durch xClass erweitern

Wie beinahe jede Klasse in TYPO3, so kann auch stdWrap durch xClass erweitert werden. Jedoch kann nur eine Extension installiert sein, die das xClassing nutzt, denn dieses kann nur einmalig angewendet werden. Nutzt man xClass so ist unbedingt darauf zu achten, dass stdWrap rekursiv aufgerufen wird. Man kann seine eigene Funktion dann jedoch nur ganz am Anfang oder ganz am Ende von stdWrap aufrufen.

Seit TYPO3 4.2: Hooks in stdWrap

StdWrap implemntiert vier Hooks: stdWrapPreProcess ganz am Anfang von stdWrap, stdWrapOverride (entspricht preUserFunc) nach dem Holen der Daten vor deren Überprüfung, stdWrapProcess direkt nach dem rekursiven stdWrap Aufruf, sowie stdWrapPostProcess (entspricht ~ postUserFunc ) ganz am Ende der stdWrap Funktion (vor den debug Ausgaben).

Eigene zur Veröffentlichung bestimmten Extensions sollten immer die Hook-Methode nutzen. Hier gibt es eine Anleituzng zum Erstellen von stdWrap-Hooks: Anleitung: Hook für stdWrap erstellen.

Extensions, die stdWrap erweitern:

Im folgenden eine Liste von Extensions, die stdWrap erweitern. Vorsicht ist mit Extensions geboten, die xClass nutzen.

Extensions, die stdWrap erweitern (stdWrap Hooks):

Extensions, die stdWrap erweitern (xClass, userFunc)

  • STDWRAP plus( nh_stdwrap_plus ): Suchen und Ersetzen von Strings (+)
  • meta_stdwrap  (-)
  • am_stdwrap_numberformat (-)  
  • kb_betterstdwrap (--)
Keine Kommentare

Kommentar hinzufügen

* - Pflichtfeld

*




*