stdWrap ist eine Sammlung von Funktionen, die in TypoScript angewandt werden können. Die Funktionen sind grob unterteilt in
Die Funktionen werden in der Reihenfolge abgearbeitet, in der sie im Quellcode hinterlegt sind. Die Reihenfolge im TypoScript spielt keine Rolle. Man kann stdWrap aber rekursiv (stdWrap.stdWrap
) anwenden, um die Reihenfolge zu beinflussen. Seit TYPO3 4.7 steht mit orderedStdWrap
eine neue Funktion zur Verfügung, mit der man die Reihenfolge der Anwendungen nummeriert festlegen kann.
hook: Schnittstelle für eigene Funktionen (Extension-Programmierung)
Datentyp: boolean
Überschreibt den aktuellen Wert des Elternelements mit dem vorher definierten Wert. Genaueres unter current.
ab TYPO3 4.7
Datentyp:
Datentyp: string / stdWrap
Ersetzt wie setContentToCurrent
den aktuellen Wert des Elternelements, hier wird der Wert aber manuell als String angegeben. stdWrap-Funktionen sind anwendbar. Genaueres unter current.
Datentyp: Array von Sprachschlüsseln (de, en, etc.)
Wird verwendet, um optionale Übersetzungen eines Texts festzulegen. Alle weiteren stdWrap-Funktionen werden dann auf value
und lang
angewendet.
config.language = de 10 = TEXT 10 { value = Welcome! lang.de = Willkommen! }
Datentyp: getText
Ermöglicht das Auslesen von Daten aus verschiedensten Quellen: Systemeinstellungen, Session-Daten, DB-Feld-Inhalte, etc.
# Auf der Ebene von 'PAGE' muss die Tabelle 'pages' nicht extra angesprochen werden. 10 = TEXT 10.data = field:nav_title # Liest den GET-Parameter '&zahl=' aus 10 = TEXT 10.data = GP:zahl # Gibt den Header des Inhaltselements 17 aus # Hinweis: Die ID 17 könnte mit zus. TypoScript dynamisch ausgelesen werden 10 = TEXT 10.data = DB : tt_content:17:header # Gibt den Namen des angemeldeten Benutzers aus 10 = TEXT 10.data = TSFE:fe_user|user|username # Liefert die URL der aktuellen Seite: 10 = TEXT 10.data = getIndEnv:TYPO3_REQUEST_URL
Datentyp: Feldname
Greift auf Felder der aktuellen Tabelle zu. Innerhalb des PAGE-Objekts wird auf die pages-Tabelle zugegriffen.
# Folgendes Beispiel erfüllt denselben Zweck wie das erste TypoScript bei 'data': 10 = TEXT 10.field = nav_title # Mehrere Feldnamen können mit zwei Slashes getrennt werden # Der Inhalt des ersten nicht leeren Feldes wird ausgegeben. 10 = TEXT 10.field = nav_title // title
Datentyp: cObject
Gibt den Inhalt bzw. das Ergebnis eines cObjects aus.
temp.case = CASE temp.case { key.data = page:uid 1 = TEXT 1.value = Dies ist die Startseite. default = TEXT default.value = Nicht die Startseite. } page = PAGE page { 10 = TEXT 10.cObject < temp.case } # Lädt das Ergebnis des cObject 'CASE' als Wert. UID 1 = Dies ist die Startseite.
Datentyp: Tabellenname und select
numRows liest mithilfe von select
Datensätze aus der Datenbank aus und gibt die Anzahl der passenden Datensätze aus.
# Ausgabe: Anzahl der direkten Unterseiten der aktuellen Seite, # die 'ab' im Namen beinhalten 10 = TEXT 10.numRows { table = pages select { where = title LIKE '%ab%' } } # Die select-Abfrage kann präzisiert werden: [...] # Von der Unterseite 4 suchen: 10.numRows.select.pidInList = 4 # Von der in 'pidInList' festgelegten Seite in 3 Ebenen suchen: 10.numRows.select.recursive = 3
Datentyp: dir / stdWrap
Gibt den Inhalt eines Verzeichnisses als kommaseparierte Liste aus. Voreingestellt kann nur der fileadmin-Ordner (und dessen Unterverzeichnisse) angegeben werden. Wenn ein anderer Ordner gewünscht ist, muss dies mit config.lockFilePath =
eingestellt werden. Eine kommaseparierte Liste kann dort aber nicht angelegt werden.
Es gibt 5 verschiedene Parameter, die mit dem Pipe-Symbol voneinander getrennt werden:
/
am Ender
für umgekehrt, leer für normal.0
), wird zusätzlich zu den Dateinamen der gesamte Pfad ausgegeben. Parameter können weggelassen werden, ob dann zwischen den beiden Pipe-Symbolen ein Leerzeichen steht oder nicht, ist egal. Pipe-Symbole nach dem letzten gewünschten Parameter können weggelassen werden; theoretisch reicht also der Dateipfad aus.
10 = TEXT 10.filelist = fileadmin/images/|png,jpg|name||0 # Ausgabe: bild1.png,bild2.jpg,bild3.png
Datentyp:
hook: Schnittstelle für eigene Funktionen (Extension-Programmierung)
Datentyp: string / stdWrap
override
funktioniert genau entgegengesetzt zu ifEmpty
: Wenn das Ergebnis von override nicht leer ist, ersetzt dieser Inhalt den ursprünglichen Wert.
10 = TEXT 10.value = Es existiert kein Navigationstitel. 10.override.field = nav_title
Datentyp:
Datentyp: string / stdWrap
Wenn der eigentliche Inhalt leer ist oder den Wert 0
(false) besitzt, wird der Inhalt aus ifEmpty
ausgegeben.
10 = TEXT 10.field = nav_title 10.ifEmpty = Es existiert kein Navigationstitel. 10 = TEXT 10.value = 0 10.ifEmpty = Es existiert kein Wert. # Ausgabe: Es existiert kein Wert.
Mit den bereitgestellten stdWrap-Funktionen und cObject
kann dann beispielsweise auch ein anderer Inhalt referenziert werden:
lib.alternative = TEXT lib.alternative.value = Alternativer Inhalt. 10 = TEXT 10.data = field:nav_title 10.wrap = <h3>|</h3> 10.ifEmpty.cObject < lib.alternative # Ausgabe: <h3>Alternativer Inhalt.</h3>
Datentyp: string / stdWrap
Ähnlich wie ifEmpty
, jedoch wird 0
als normaler Wert angesehen und entsprechend ausgegeben oder weiterverarbeitet.
10 = TEXT 10.value = 10.ifBlank = Es existiert kein Wert. # Ausgabe: Es existiert kein Wert. 10 = TEXT 10.value = 0 10.ifBlank = Es existiert kein Wert. # Ausgabe: 0
Datentyp: int + calc + last + rand
Zerlegt den Inhalt eines Datenbankfeldes oder Wertes in ein Array und gibt den gewünschten Wert wieder. Standard-Trennzeichen ist das Komma.
Besondere Schlüsselwörter:
last
→ letzter Wert
rand
→ zufälliger Wert ab TYPO3 4.6
# Drittletzter Wert. Ausgabe: Zwei 10 = TEXT 10.value = Null,Eins,Zwei,Drei,Vier 10.listNum = last - 2 # Mit 'calc' berechnen. Ausgabe: Zwei 20 = TEXT 20.value = Null,Eins,Zwei,Drei,Vier 20.listNum = -1 + 2 * 2 # Hinweis: calc arbeitet die Rechenaufgabe von vorne nach hinten ab (keine Punkt- vor Strichrechnung!) # Trennzeichen wählen 30 = TEXT 30.value = Null&Eins&Zwei&Drei&Vier 30.listNum = 1 30.listNum.splitChar = & # Zufälliger Wert aus Datenbanktabelle (Feld 'media' in Seiteneigenschaften) 40 = TEXT 40.data = DB:pages:1:media 40.listNum = rand
Datentyp: boolean
Entfernt mit der PHP-Funktion trim()
alle Leerzeichen vor und nach dem Wert.
10 = TEXT 10.data = field:header 10.trim = 1
ab TYPO3 6.1
Füllt den aktuellen Wert auf eine festgelegte Länge (length
). Der mit padWith
festgelegte Füllwert kann aus einem oder mehreren Zeichen bestehen und wiederholt sich, bis die gewünschte Gesamtlänge des Wertes erreicht ist. Mit type
kann gewählt werden, an welcher Seite dieser Füllwert angesetzt wird.
strPad
wird den aktuellen Wert hingegen nicht beschneiden, falls er bereits länger ist als mit length
angegeben.
10 = TEXT 10.value = HALLO WELT. 10.strPad { // Gewünschte Gesamtlänge des Eingabewertes: length = 36 // Beliebiger Füllwert: padWith = füllen // left, right oder both: type = both } # Ausgabe: füllenfüllHALLO WELT.füllenfülle
Ab TYPO3 6.2 können auf alle drei Eigenschaften stdWrap-Funktionen angewendet werden.
Datentyp: stdWrap
Ermöglicht das rekursive Anwenden von stdWrap, um die Reihenfolge von Funktionen beeinflussen zu können.
hook: Schnittstelle für eigene Funktionen (Extension-Programmierung)
Datentyp: boolean
Gibt an, dass ein Wert vorhanden sein muss, nachdem Daten importiert und verarbeitet wurden (data, field, current, listNum, trim). 0
ist ein Wert; in diesem Fall sollte if
verwendet werden.
Das folgende TypoScript ist css_styled_content entnommen. Es ergänzt das <Hx>-Tag für die Überschriften mit einem style-Element, welches die gewünschte Position (left, right, center) enthält; aber nur, wenn im DB-Feld auch ein Wert enthalten ist. Bei der Default-Einstellung ist das DB-Feld leer.
lib.stdheader.2 = LOAD_REGISTER lib.stdheader.2 { headerStyle.field = header_position headerStyle.required = 1 headerStyle.noTrimWrap = | style="text-align:|;"| } # Ausgabe bei leerem DB-Feld 'header_position': # <h1>Headline</h1> # Ausgabe bei Wert 'center': # <h1 style="text-align:center;">Headline</h1>
Mit if
ist es möglich, eine oder mehrere Bedingungen zu definieren, bevor das Ergebnis eines cObjects ausgegeben wird. Bei Erfüllung aller Kriterien wird true zurückgegeben. Wenn nur eine Bedingung nicht erfüllt wird, führt dies mit der Meldung false zum Abbruch.
Eine genauere Erklärung ist unter if zu finden.
Datentyp: Feldname
Die TypoScript-Anweisungen des Elements werden nur ausgeführt, wenn das in fieldRequired
genannte Feld nicht leer ist bzw. nicht den Wert 0
oder NULL
besitzt. Dieses Feld muss nicht zwingend identisch mit dem Inhalt des Elements sein.
10 = TEXT 10.fieldRequired = TSconfig 10.value = Diese Seite besitzt TSconfig-Einstellungen
Mit dieser Funktion kann man Daten aus der Datenbank für das Frontend in einem anderem Format (charset, z.B. UTF-8 zu ISO 8859-1) ausgeben. Da dieser Anwendungsfall in einer sauberen Installation praktisch nicht gegeben ist, verzichte ich hier auf ein Beispiel.
Eine umfangreiche Erklärung findet sich hier.
Datentyp:
Eine umfangreiche Erklärung findet sich hier.
ab TYPO3 4.6
Sucht und ersetzt Inhalt, unterstützt reguläre Ausdrücke. Wie bei einem COA können mehrere Suchvorgänge gleichzeitig durchgeführt werden. Die Nummerierung ist auch bei einem einzelnen Suchvorgang Pflicht.
10 = TEXT 10 { value = Rot stdWrap.replacement { 10 { search = Rot replace = Blau } } } # Ausgabe: Blau 20 = TEXT 20 { value = There_are_a_cat,_a_dog_and_a_tiger_in_da_hood!_Yeah! stdWrap.replacement { 10 { search = _ # 32 = ASCII-Code für ein Leerzeichen replace.char = 32 } 20 { search = in da hood replace = around the block } 30 { search = #a (Cat|Dog|Tiger)#i replace = an animal useRegExp = 1 } } } # Ausgabe: There are an animal, an animal and an animal around the block! Yeah!
Datentyp: boolean / intval
Liest den Wert als Rechenaufgabe und gibt das Ergebnis aus.
+
, -
, *
, /
, ^
(Potenz), %
(Modulo1)prioriCalc = intval
gesetzt werden (2.99 wird zu 2). 10 = TEXT 10.value = 3*3+2*2 10.prioriCalc = 1 # Ausgabe: 13 20 = TEXT 20.value = (3*3+2)*2 20.prioriCalc = 1 # Ausgabe: 22 30 = TEXT 30.value = 2 ^ 4 30.prioriCalc = 1 # Ausgabe: 16 40 = TEXT 40.value = 20/3 40.prioriCalc = intval # Ausgabe: 6
1Modulo berechnet den Rest einer Teilung. 14%4
ergibt 2, weil die 4 dreimal in die 14 passt, und anschließend noch der Restwert 2 übrigbleibt. 10%5
ergibt 0, da die 5 genau zweimal in die 10 passt und somit kein Restwert vorhanden ist. 4%7
ergibt 4, weil die 7 nicht in die 4 passt und daher 4 auch als Restwert stehen bleibt.
Datentyp: integer
Wandelt den Integerwert in ein einzelnes ASCII-Zeichen um. Verwendet die PHP-Funktion chr()
(zusammen mit intval()
, um vorher eine Ganzzahl zu erhalten).
10 = TEXT 10.char = 83 # Ausgabe: S
Datentyp: boolean
Prüft den Wert auf eine Zahl. Am Anfang stehende Ziffern werden als Integer ausgelesen, ggf. folgende Zeichen werden ignoriert. Stehen am Beginn des Werts keine Ziffern, gibt intval 0
aus, egal ob an anderer Stelle des Wertes noch Ziffern folgen.
10 = TEXT 10.value = 19.99 Euro 10.intval = 1 # Ausgabe: 19 10 = TEXT 10.value = Euro 19.99 10.intval = 1 # Ausgabe: 0
ab TYPO3 4.6
Datentyp: string / stdWrap
Erstellt einen Hash-Wert aus dem aktuellen Wert mit einem der Algorithmen aus der PHP-Funktion hash_algos (z.B. md5 oder sha1).
# Gravatar verwendet zur Anzeige des Bildes den Hash der E-Mail-Adresse: 10 = TEXT 10 { value = test@example.org hash = md5 wrap = <img src="http://www.gravatar.com/avatar/|" /> # Ergebnis: <img src="http://www.gravatar.com/avatar/0c17bf66e649070167701d2d3cd71711"> }
ab TYPO3 4.6
Datentyp:
Rundet den Wert auf oder ab. Es gibt zwei Untereigenschaften:
.roundType
mit folgenden Schlüsselwerten:.decimals
: Anzahl der Nachkommastellen. Nur in Verbindung mit .roundType = round.lib.number = TEXT lib.number { value = 3.14159 round.roundType = round round.decimals = 2 } # Ausgabe: 3.14
Datentyp: numberFormat (PHP-Funktion number_format())
Formatiert eine Gleitkommazahl um, z.B. in eine Preisangabe.
10 = TEXT 10 { value = 1299.9 numberFormat { # Nachkommastellen festlegen: decimals = 2 # Verwendung von cObject für mehrsprachige Formatierung: thousands_sep.cObject = TEXT thousands_sep.cObject { value = , stdWrap.lang.de = . } dec_point.cObject = TEXT dec_point.cObject { value = . stdWrap.lang.de = , } } noTrimWrap = || €| } # Ausgabe Deutsch: 1.299,90 € # Ausgabe Englisch: 1,299.90 €
ab TYPO3 4.6
Ermöglicht das Errechnen von Werten, die in einer kommaseparierten Liste mit Bindestrich als Spanne markiert sind. Das Mischen von Ziffern und Buchstaben ist möglich, beide Zeichenarten lassen sich errechnen. Inhalte, die in dieser Liste nicht mit Bindestrich unterteilt sind, werden auch nicht berechnet.
10 = TEXT 10.value = 1,3,6-9,12 10.expandList = 1 # Ausgabe: 1,3,6,7,8,9,12 20 = TEXT 20.value = a-g 20.expandList = 1 # Ausgabe: a,b,c,d,e,f,g 30 = TEXT 30.value = Text,6-9,Text 30.expandList = 1 # Ausgabe: Text,6,7,8,9,Text 40 = TEXT 40.value = at-bc 40.expandList = 1 # Ausgabe: at,au,av,aw,ax,ay,az,ba,bb,bc 50 = TEXT 50.value = 1t-2c 50.expandList = 1 # Ausgabe: 1t,1u,1v,1w,1x,1y,1z,2a,2b,2c
Datentyp: date-conf (PHP-Funktion date()
)
Wandelt einen Unix-Timestamp (Sekunden seit 1.9.1970) in eine Zeitangabe um. Buchstaben, die nicht mit der Funktion umgewandelt werden sollen, müssen mit einem Backslash maskiert werden.
10 = TEXT 10.field = tstamp 10.date = d.m.Y # Ausgabe: 21.01.2014 20 = TEXT 20.field = tstamp 20.date = \E\s \i\s\t H:i \U\h\r. # Ausgabe: Es ist 20:30 Uhr.
Datentyp: strftime-conf (PHP-Funktion strftime()
)
Wandelt ebenfalls einen Unix-Timestamp (Sekunden seit 1.9.1970) in eine Zeitangabe um. Unterschied zu stdWrap.date
: Text muss nicht mit einem Backslash maskiert werden, stattdessen werden die zu gewünschten Parameter mit %
begonnen.
10 = TEXT 10.field = tstamp 10.strftime = %d.%m.%Y # Ausgabe: 21.01.2014 20 = TEXT 20.field = tstamp 20.strftime = Es ist %R Uhr. # Ausgabe: Es ist 20:30 Uhr.
Kann die Differenz zwischen dem aktuellen und dem gesetzten Zeitpunkt (Unix-Timestamp) als Alter ausgeben. Bei Nutzung mit boolean-Wert 1
wird das Alter mit englischen Zeitangaben ausgegeben. Man kann diese überschreiben, wenn man stattdessen die entsprechenden Zeitangaben übersetzt und mit Pipesymbol getrennt aufführt (feste Reihenfolge).
Die Nutzung der age
-Zeitangaben hängt vom errechneten Alter ab:
bis 60 Minuten = min
bis 24 Stunden = hrs
bis 356 Tage = days
ab 365 Tage = yrs
10 = TEXT 10.field = tstamp 10.age = 1 # Ausgabe: 2 days 20 = TEXT 20.field = tstamp 20.age = Minute(n) | Stunde(n) | Tag(e) | Jahr(e) # Ausgabe: 2 Tag(e)
Datentyp: case
Verändert die Groß-/Kleinschreibung von Strings.
10 = TEXT 10.value = Hello World! 10.case = upper # Ausgabe: HELLO WORLD! 20 = TEXT 20.value = Hello World! 20.case = lower # Ausgabe: hello world!
Datentyp: boolean
Rechnet einen Integer-Wert in Bytes um. Bis zum Wert 900
wird kein Kürzel angehangen (kann mit bytes.labels
geändert werden).
Mit bytes.labels
können die Standardwerte (K, M, G) geändert werden.
bis 900 = leer
(Bytes)
901 bis 900000 = K
900001 bis 900000000 = M
ab 900000001 = G
10 = TEXT 10.value = 1024 10.bytes = 1 10.bytes.labels = " bytes | KB | MB | GB" # Ausgabe: 1.0 KB
Beschneidet den String. Es sind zwei Parameter möglich, die durch ein Komma getrennt werden:
0
). Wird nur dieser Parameter verwendet, wird ab dem definierten Zeichen der gesamte Rest des Strings ausgegeben.,3
), wird vom Beginn des Strings an gezählt (Position 0).10 = TEXT 10.value = abcdefgh 10.substring = 3 # Ausgabe: defgh 20 = TEXT 20.value = abcdefgh 20.substring = ,3 # Ausgabe: abc 30 = TEXT 30.value = abcdefgh 30.substring = 1,4 # Ausgabe: bcde 40 = TEXT 40.value = abcdefgh 40.substring = -2 # Ausgabe: gh
Datentyp: boolean
Entfernt als gefährlich eingestuften HTML-Code, der Cross-Site-Scripting ermöglichen könnte.
10 = TEXT 10.value = <i-frame width="425" height="350" src="http://www.example.org"></i-frame> 10.removeBadHTML = 1 # Ausgabe: [leer] # Hinweis: iframe wurde wegen des wiki-Sperrfilters umbenannt.
Datentyp: integer | string | boolean
Kürzt Text auf eine wählbare Zeichenlänge. Zeichen von HTML-Tags werden nicht mitgezählt. Es sind bis zu drei Parameter möglich, die durch das Pipe-Symbol unterteilt werden:
10 = TEXT 10.value = <p>Ich bin ein Beispieltext</p> 10.cropHTML = 10| ... # Ausgabe: <p>Ich bin ei ...</p> 20 = TEXT 20.value = <p>Ich bin ein Beispieltext</p> 20.cropHTML = -10|... # Ausgabe: <p>... ispieltext</p> 30 = TEXT 30.value = <p>Ich bin ein Beispieltext</p> 30.cropHTML = 10| ...|1 # Ausgabe: <p>Ich bin ...</p> 40 = TEXT 40.value = <p>Ich bin ein Beispieltext</p> 40.cropHTML = 10||1 # Ausgabe: <p>Ich bin</p>
Datentyp: boolean
Entfernt alle HTML-Tags.
10 = TEXT 10.value = <div><h1>Willkommen</h1></div> 10.stripHtml = 1 # Ausgabe: Willkommen
Datentyp: integer | string | boolean
Kürzt Strings auf eine wählbare Zeichenlänge. Es sind bis zu drei Parameter möglich, die durch das Pipe-Symbol unterteilt werden:
Achtung: Zeichen von HTML-Tags werden mitgezählt. Bei Werten mit HTML daher cropHTML
verwenden!
10 = TEXT 10.value = Ich bin ein Beispieltext 10.crop = 10| ... # Ausgabe: Ich bin ei ... 20 = TEXT 20.value = <p>Ich bin ein Beispieltext</p> 20.crop = 10| ... # Ausgabe: <p>Ich bin ... 30 = TEXT 30.value = Ich bin ein Beispieltext 30.crop = 10| ...|1 # Ausgabe: Ich bin ... 40 = TEXT 40.value = Ich bin ein Beispieltext 40.crop = -4|... |0 # Ausgabe: ... text
Datentyp: boolean
Ersetzt mit der PHP-Funktion rawurlencode()
alle nicht-alphanumerischen Zeichen außer -_.
durch ein Prozentzeichen und zwei Hex-Werte, zB. %20
bei Leerzeichen. Diese Maskierung schützt Sonderzeichen in Werten vor fehlerhafter Interpretation.
Datentyp: boolean
Wandelt Sonderzeichen in HMTL-Entitäten um, also & zu &. Um die Umwandlung von im Wert vorhandenen HTML-Entitäten zu verhindern, kann man die Untereigenschaft .preserveEntities
verwenden. Andernfalls würde ö zu &ouml;.
10 = TEXT 10.value = <p>Schmidt & Söhne</p> 10.htmlSpecialChars = 1 10.htmlSpecialChars.preserveEntities = 1 # Quellcode: <p>Schmidt & Söhne</p> # Ansicht: <p>Schmidt & Söhne</p>
Datentyp:
Datentyp: string / stdWrap
Konvertiert alle Zeilenumbrüche im Wert in das HTML-Element <br>
. Verwendet hierzu die PHP-Funktion nl2br().
10 = TEXT 10.value ( Hallo Welt! ) 10.br = 1 # Ausgabe: Hallo<br>Welt!
Datentyp:
siehe → encapsLines
Datentyp: boolean
Teilt den String anhand der Zeichen ,
, ;
und chr(10) (Zeilenumbruch), entfernt Leerzeichen am Anfang und Ende der so gewonnenen Werte und gibt diese als kommasepararierte Liste aus.
10 = TEXT 10.value ( eins, zw ei drei vier; fünf ) 10.keywords = 1 # Ausgabe: eins,zw ei,drei,vier,fünf
Datentyp: wrap / stdWrap
Siehe stdWrap-Funktion wrap. Wird vor wrap
ausgeführt und steht demnach innen.
10 = TEXT 10.value = Inhalt 10.wrap = <ul>|</ul> 10.innerWrap = <li>|</li> # Ausgabe: <ul><li>Inhalt</li></ul>
Datentyp: wrap / stdWrap
Siehe stdWrap-Funktion wrap. Wird vor wrap
ausgeführt, aber nach innerWrap
.
entfernt mit TYPO3 8.4
Datentyp: wrap
Der Name ist irreführend. Es handelt sich hierbei um einen normalen Wrap. Siehe stdWrap-Funktion wrap.
Datentyp: HTML-Attribut / integer
Ermöglicht das Hinzufügen von Attributen zu einem HTML-Element im aktuellen Wert. Mit der Eigenschaft _offset
wird das HTML-Element ausgewählt:
Die Attribute werden folgendermaßen notiert: addParams.[Attribut] = [Wert]
. Die Attribute werden alle demselben unter _offset
gewählten HTML-Element zugeordnet!
10 = TEXT 10.value = <p><span>Text</span></p> 10.addParams.style = color:red 10.addParams._offset = 2 # Ausgabe: <p><span style="color:red">Text</span><p> 20 = TEXT 20.value = <table><tr><td> 20.addParams.rowspan = 2 20.addParams._offset = -1 # Ausgabe: <table><tr><td rowspan="2">
Datentyp:
entfernt mit TYPO3 7.3
Datentyp:
entfernt mit TYPO3 7.3
siehe → filelink
Datentyp: cObject
Ermöglicht es, dem cObject ein weiteres cObject voranzusetzen. Stattdessen könnte jedoch auch mit einem COA gearbeitet werden, was übersichtlicher und anpassungsfähiger wäre. Die Funktionsweise von preCObject
ist identisch mit prepend
.
10 = HMENU 10 { special = rootline special.range = -1 1 = TMENU 1.NO = 1 stdWrap.preCObject = TEXT stdWrap.preCObject.value = Aktuelle Seite: } # Ausgabe: Aktuelle Seite: Seitentitel
Datentyp: cObject
Ermöglicht es, dem cObject ein weiteres cObject nachfolgen zu lassen. Stattdessen könnte jedoch auch mit einem COA gearbeitet werden, was übersichtlicher und anpassungsfähiger wäre. Die Funktionsweise von postCObject
ist identisch mit append
.
10 = TEXT 10 { value = Sie sind hier: stdWrap.postCObject = HMENU stdWrap.postCObject { special = rootline special.range = -1 1 = TMENU 1.NO = 1 } } # Ausgabe: Aktuelle Seite: Seitentitel
Datentyp: align / stdWrap
Umschließt den Wert mit einem div
-Element, das ein text-align-Styleattribut beinhaltet.
10 = TEXT 10.value = Inhalt 10.wrapAlign = left # Ausgabe: <div style="text-align:left;">Inhalt</div>
Eine umfangreiche Erklärung findet sich hier.
Datentyp:
Datentyp: positive integer
Setzt einen Abstand vor dem cObject, die Angabe erfolgt als Pixelwert. Sehr unsaubere Lösung (siehe space
).
Datentyp: positive integer
Setzt einen Abstand nach dem cObject, die Angabe erfolgt als Pixelwert. Sehr unsaubere Lösung (siehe space
).
Datentyp: space
Ermöglicht das Bestimmen eines Abstandes vor und nach dem cObject, entweder mit einem unsichtbaren .gif oder durch .useDiv
mit leeren div
-Elementen. Beide Lösungen sind mehr als unsauber und sollten vermieden werden. Stattdessen sollte mit margin-Angaben gearbeitet werden.
10 = TEXT 10.value = Inhalt 10.space = 20|30 # Ausgabe: # <img src="clear.gif" width="1" height="20" border="0" class="spacer-gif" alt="" title="" /> # <br /> # Inhalt # <img src="clear.gif" width="1" height="30" border="0" class="spacer-gif" alt="" title="" /> # <br /> 20 = TEXT 20.value = Inhalt 20.space = 20|30 20.space.useDiv = 1 # Ausgabe: # <div class="content-spacer spacer-before" style="height:20px;"></div> # Inhalt # <div class="content-spacer spacer-after" style="height:30px;"></div>
Datentyp: wrap
Umschließt den aktuellen Wert mit dem im Wrap definierten Inhalt. Die Stelle, wo der Inhalt eingefügt werden soll, wird mit dem Pipe-Symbol markiert. Dieses kann auch am Anfang oder Ende des Wraps stehen. Ist kein Pipe-Symbol im Wrap vorhanden, wird der Inhalt am Ende des Wraps eingefügt.
Mit der zusätzlichen Eigenschaft .splitChar
kann ein alternatives Trennzeichen gewählt werden.
10 = TEXT 10.value = Inhalt 10.wrap = <p>|</p> # Ausgabe: <p>Inhalt</p> 20 = TEXT 20.value = Inhalt 20.wrap = <p>?</p> 20.wrap.splitChar = ? # Ausgabe: <p>Inhalt</p>
Datentyp: wrap
Grundsätzlich wie wrap. Ermöglicht zudem, alle Leerzeichen im Wrap zu erhalten. Dazu dienen zwei weitere Pipe-Symbole als Markierungen, wo der Wrap beginnt und endet. Gewünschte Leerzeichen müssen so nicht mit gesetzt werden.
ab TYPO3 6.1: .splitChar
möglich. Hilfreich, um optionSplit mit noTrimWrap
zu verwenden.
10 = TEXT 10.value = Inhalt 10.noTrimWrap = | <p>Wrap: | </p> | # Ausgabe: <p>Wrap: Inhalt </p>
Datentyp: wrap, getText und andere
Ermöglicht einen Wrap, in dem dynamische Inhalte mittels getText ausgelesen werden können. Der oder die getText-Abfragen werden in geschweifte Klammern geschrieben.
# Ausgabe: <p>Sie sind auf Seite: Seitentitel</p> 10 = TEXT 10.value = Sie sind auf Seite: 10.dataWrap = <p>| {field:title}</p> # Ausgabe: <body id="17"> page.bodyTag > page.bodyTagCObject = TEXT page.bodyTagCObject.dataWrap = <body id="{tsfe:id}">
Datentyp: cObject
Ermöglicht es, dem cObject ein weiteres cObject voranzusetzen. Stattdessen könnte jedoch auch mit einem COA gearbeitet werden, was übersichtlicher und anpassungsfähiger wäre. Die Funktionsweise von prepend
ist identisch mit preCObject
.
10 = HMENU 10 { special = rootline special.range = -1 1 = TMENU 1.NO = 1 stdWrap.prepend = TEXT stdWrap.prepend.value = Aktuelle Seite: } # Ausgabe: Aktuelle Seite: Seitentitel
Datentyp: cObject
Ermöglicht es, dem cObject ein weiteres cObject nachfolgen zu lassen. Stattdessen könnte jedoch auch mit einem COA gearbeitet werden, was übersichtlicher und anpassungsfähiger wäre. Die Funktionsweise von append
ist identisch mit postCObject
.
10 = TEXT 10 { value = Sie sind hier: stdWrap.append = HMENU stdWrap.append { special = rootline special.range = -1 1 = TMENU 1.NO = 1 } } # Ausgabe: Aktuelle Seite: Seitentitel
ab TYPO3 4.7
Datentyp: nummerierte Liste mit stdWrap
Ermöglicht das einfache Festlegen der Reihenfolge, in der stdWrap-Funktionen abgearbeitet werden.
10 = TEXT 10.value = eine 10.orderedStdWrap { 30.wrap = |. 10.wrap = ist | flexible 10.innerWrap = | 20.wrap = Dies|Lösung 20.stdWrap.wrap = | } # Ausgabe: Dies ist eine flexible Lösung.
Datentyp: boolean
Wenn aktiviert, wird der Inhalt des betreffenden cObjects nach getText-Abfragen geparst. Diese müssen mit geschwungenen Klammern notiert sein.
10 = TEXT 10.value = Sie sind auf Seite: {field:title} 10.insertData = 1
Datentyp:
Datentyp:
Datentyp:
Datentyp: string
Fügt vor und nach dem Inhalt einen HTML-Kommentar ein.
Der erste Teil vor dem Pipe-Symbol bestimmt die Anzahl der Tabulatoren, um die der Kommentar eingerückt wird. Der zweite Teil bestimmt den Inhalt des Kommentars. Dieser wird automatisch nach getText-Abfragen geparst. [begin] und [end] wird automatisch hinzugefügt.
Folgendes Beispiel ist aus css_styled_content entnommen:
Setup:
tt_content.stdWrap.prefixComment = 1 | CONTENT ELEMENT, uid:{field:uid}/{field:CType}
Ausgabe:
<!-- CONTENT ELEMENT, uid:42/text [begin] --> [...] <!-- CONTENT ELEMENT, uid:42/text [end] -->
Datentyp:
Datentyp:
ab TYPO3 4.7
Datentyp:
hook: Schnittstelle für eigene Funktionen (Extension-Programmierung)
Datentyp: boolean
Zur Fehlersuche: Gibt den Inhalt mit htmlspecialchars() in einem <pre>-Element aus. So muss nicht erst der Quellcode geöffnet werden.
Datentyp: boolean + 2
Zur Fehlersuche: Ähnlich wie debug
. Der Inhalt wird jedoch am Anfang der Webseite ausgegeben, zusätzlich zur normalen Ausgabe des betroffenen Elements. Mit dem boolean-Wert 1 erfolgt die Ausgabe der einzelnen Werte innerhalb von Pipe-Symbolen. Mit dem Wert 2 werden die Werte in einer Tabelle ausgegeben.
10 = TEXT 10.value = eins,zwei,drei 10.split { token = , cObjNum = 1 1.current = 1 1.wrap = <p>|</p> 1.debugFunc = 1 } Ausgabe: |<p>eins</p>||<p>zwei</p>||<p>drei</p>|
Datentyp: boolean
Zur Fehlersuche: Liefert den gesamten aktuellen Inhalt aus $cObj->data in Tabellenform. Bei mehreren current-Werten werden entsprechend viele Tabellen ausgegeben.
Die folgenden TypoScript-Funktionen sind entsprechend ihrer Reihenfolge im stdWrap notiert. Zuerst wird ein Wert inkl. HTML-Tags erzeugt. Anschließend wird mit stdWrap.wrap
ein div-Tag hinzugefügt (die erste Wrap-Funktion käme in stdWrap erst nach stripHtml, was sinnvoll ist - daher der rekursive Aufruf). Mit stripHtml = 1
werden alle HTML-Tags entfernt, auch die nachträglich hinzugefügten! Das letzte wrap
fügt dem Wert dann ein neues HMTL-Tag hinzu.
10 = TEXT 10.value = <span class='headline'><h1 style='color:red'>Überschrift</h1></span> # Ausgabe: wie unter 'value' angegeben 10.stdWrap.wrap = <div>|</div> # Ausgabe: <div><span class='headline'><h1 style='color:red'>Überschrift</h1></span></div> 10.stripHtml = 1 # Ausgabe: Überschrift 10.wrap = <h2>|</h2> # Ausgabe: <h2>Überschrift</h2>
Wenn in der rechten Spalte Inhalt eingefügt wurde, verwendet TYPO3 automatisch das passende Template.
lib.template = COA lib.template { 10 = COA 10 { # Inhalt vorhanden -> numRows = 1 -> isTrue if.isTrue.numRows < styles.content.getRight 10 = TEMPLATE 10 { template = FILE template.file = fileadmin/templates/main-template-2column.html } } 20 = COA 20 { # kein Inhalt -> numRows = 0 -> isFalse if.isFalse.numRows < styles.content.getRight 10 = TEMPLATE 10 { template = FILE template.file = fileadmin/templates/main-template.html } } }