Benutzer-Werkzeuge

Webseiten-Werkzeuge


typo3:about:functions:stdwrap

stdWrap

stdWrap ist eine Sammlung von Funktionen, die in TypoScript angewandt werden können. Die Funktionen sind grob unterteilt in

  • Daten holen (data, field, cObject, …)
  • Überschreiben /Bedingungen (override, if, trim, …)
  • Daten verarbeiten (split, wrap, typolink, …)

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.


Daten holen

stdWrapPreProcess

hook: Schnittstelle für eigene Funktionen (Extension-Programmierung)


setContentToCurrent

Datentyp: boolean

Überschreibt den aktuellen Wert des Elternelements mit dem vorher definierten Wert. Genaueres unter current.


cacheRead

ab TYPO3 4.7
Datentyp:


setCurrent

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.


lang

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!
}

data

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

field

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

current

Datentyp: boolean

Übergibt den aktuellen Wert an ein Element oder Parameter. Siehe current.


cObject

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.

numRows

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

filelist

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:

  1. Pfad inkl. Slash / am Ende
  2. Kommaseparierte Liste von möglichen Dateiendungen. Wenn leer, wird alles ausgegeben.
  3. Sortierung der Ergebnisse:
    • name → Nach Dateiname. Erst Ziffern, dann Buchstaben.
    • size → Nach Dateigröße, die kleinste Datei zuerst.
    • ext → Nach Name der Dateiendung, alphabetisch.
    • date → Nach Erstellungsdatum, die älteste Datei zuerst.
    • mdate → Nach Änderungsdatum, die älteste Datei zuerst.
  4. Umgekehrte Reihenfolge: r für umgekehrt, leer für normal.
  5. Gesamter Pfad: Wenn aktiviert (jeder Wert außer 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

preUserFunc

Datentyp:


Überschreiben /Bedingungen

stdWrapOverride

hook: Schnittstelle für eigene Funktionen (Extension-Programmierung)


override

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

preIfEmptyListNum

Datentyp:


ifEmpty

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>

ifBlank

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

listNum

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

trim

Datentyp: boolean

Entfernt mit der PHP-Funktion trim() alle Leerzeichen vor und nach dem Wert.

10 = TEXT
10.data = field:header
10.trim = 1

strPad

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.


stdWrap

Datentyp: stdWrap

Ermöglicht das rekursive Anwenden von stdWrap, um die Reihenfolge von Funktionen beeinflussen zu können.


stdWrapProcess

hook: Schnittstelle für eigene Funktionen (Extension-Programmierung)


required

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>

if

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.


fieldRequired

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

Daten verarbeiten

csConv

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.


parseFunc

Eine umfangreiche Erklärung findet sich hier.


HTMLparser

Datentyp:


split

Eine umfangreiche Erklärung findet sich hier.


replacement

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!

prioriCalc

Datentyp: boolean / intval

Liest den Wert als Rechenaufgabe und gibt das Ergebnis aus.

  • Mögliche Operatoren: +, -, *, /, ^ (Potenz), % (Modulo1)
  • Kommazahlen werden mit dem Punkt getrennt
  • Minuswerte werden als solche erkannt
  • Punkt- vor Strichrechnung wird berücksichtigt, auch Klammersetzungen sind möglich.
  • Teilung durch Null sorgt ordnungsgemäß für eine Fehlermeldung.
  • Wenn ganzzahlige Werte gewünscht sind, kann prioriCalc = intval gesetzt werden (2.99 wird zu 2).
  • Einschränkungen: Text im Wert sollte unbedingt vermieden werden, weil dann in vielen Fällen nicht alles richtig berechnet werden kann.
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.


char

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

intval

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

hash

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">
}

round

ab TYPO3 4.6
Datentyp:

Rundet den Wert auf oder ab. Es gibt zwei Untereigenschaften:

  • .roundType mit folgenden Schlüsselwerten:
    • ceil → Rundet zur nächsten Ganzzahl auf
    • floor →Rundet zur vorherigen Ganzzahl ab
    • round → Rundet den Wert auf eine festzulegende Anzahl von Nachkommastellen
  • .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

numberFormat

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 = || &euro;|
}
# Ausgabe Deutsch:  1.299,90 €
# Ausgabe Englisch: 1,299.90 €

expandList

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

date

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.

strftime

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.

age

Datentyp: boolean / string

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)

case

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!

bytes

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

substring

Beschneidet den String. Es sind zwei Parameter möglich, die durch ein Komma getrennt werden:

  1. Position des ersten Zeichens (Start bei 0). Wird nur dieser Parameter verwendet, wird ab dem definierten Zeichen der gesamte Rest des Strings ausgegeben.
    Bei einem negativen Wert wird dieser als Länge verwendet und der String vom Ende aus beschnitten; der zweite Parameter ist dann nutzlos.
  2. Gewünschte Länge des Werts. Wird nur dieser zweite Parameter verwendet (,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

removeBadHTML

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.

cropHTML

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:

  1. Zeichenlänge: Die maximale Länge des Strings. Ein negativer Wert schneidet den String beginnend vom Ende an ab.
  2. Auslassungszeichen: Ein frei wählbarer String, der dem gekürzten Text angehangen wird
  3. Ganze Worte entfernen: Wenn aktiviert, wird das Wort, dass durch die Zeichenlänge beschnitten würde, komplett entfernt. Dieser Parameter wird ignoriert, wenn dadurch der gesamte String entfernt würde.
10 = TEXT
10.value = <p>Ich bin ein Beispieltext</p>
10.cropHTML = 10|&nbsp;...
# Ausgabe: <p>Ich bin ei ...</p>
 
20 = TEXT
20.value = <p>Ich bin ein Beispieltext</p>
20.cropHTML = -10|...&nbsp;
# Ausgabe: <p>... ispieltext</p>
 
30 = TEXT
30.value = <p>Ich bin ein Beispieltext</p>
30.cropHTML = 10|&nbsp;...|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>

stripHtml

Datentyp: boolean

Entfernt alle HTML-Tags.

10 = TEXT
10.value = <div><h1>Willkommen</h1></div>
10.stripHtml = 1
# Ausgabe: Willkommen

crop

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:

  1. Zeichenlänge: Die maximale Länge des Strings. Ein negativer Wert schneidet den String beginnend vom Ende an ab.
  2. Auslassungszeichen: Ein frei wählbarer String, der dem gekürzten Text angehangen wird
  3. Ganze Worte entfernen: Wenn aktiviert, wird das Wort, dass durch die Zeichenlänge beschnitten würde, komplett entfernt. Dieser Parameter wird ignoriert, wenn dadurch der gesamte String entfernt würde.

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|&nbsp;...
# Ausgabe: Ich bin ei ...
 
20 = TEXT
20.value = <p>Ich bin ein Beispieltext</p>
20.crop = 10|&nbsp;...
# Ausgabe: <p>Ich bin&nbsp;...
 
30 = TEXT
30.value = Ich bin ein Beispieltext
30.crop = 10|&nbsp;...|1
# Ausgabe: Ich bin ...
 
40 = TEXT
40.value = Ich bin ein Beispieltext
40.crop = -4|...&nbsp;|0
# Ausgabe: ... text

rawUrlEncode

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.


htmlSpecialChars

Datentyp: boolean

Wandelt Sonderzeichen in HMTL-Entitäten um, also & zu &amp;. Um die Umwandlung von im Wert vorhandenen HTML-Entitäten zu verhindern, kann man die Untereigenschaft .preserveEntities verwenden. Andernfalls würde &ouml; zu &amp;ouml;.

10 = TEXT
10.value = <p>Schmidt & S&ouml;hne</p>
10.htmlSpecialChars = 1
10.htmlSpecialChars.preserveEntities = 1
# Quellcode: &lt;p&gt;Schmidt &amp; S&ouml;hne&lt;/p&gt;
# Ansicht: <p>Schmidt & Söhne</p>

doubleBrTag

Datentyp:


br

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!

brTag

Datentyp:


encapsLines

siehe → encapsLines


keywords

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

innerWrap

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>

innerWrap2

Datentyp: wrap / stdWrap

Siehe stdWrap-Funktion wrap. Wird vor wrap ausgeführt, aber nach innerWrap.


fontTag

entfernt mit TYPO3 8.4

Datentyp: wrap

Der Name ist irreführend. Es handelt sich hierbei um einen normalen Wrap. Siehe stdWrap-Funktion wrap.


addParams

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:

  • Positive Werte zählen vom ersten HTML-Element an.
  • Negative Werte zählen vom letzten HTML-Element an.
  • Achtung: Die schließenden HTML-Elemente werden mitgezählt, die Attribute würden von TYPO3 auch dort eingefügt!

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">

textStyle

Datentyp:

entfernt mit TYPO3 7.3


tableStyle

Datentyp:

entfernt mit TYPO3 7.3


siehe → filelink


preCObject

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

postCObject

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

wrapAlign

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.


TCAselectItem

Datentyp:


spaceBefore

Datentyp: positive integer

Setzt einen Abstand vor dem cObject, die Angabe erfolgt als Pixelwert. Sehr unsaubere Lösung (siehe space).


spaceAfter

Datentyp: positive integer

Setzt einen Abstand nach dem cObject, die Angabe erfolgt als Pixelwert. Sehr unsaubere Lösung (siehe space).


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>

wrap

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>

noTrimWrap

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 &nbsp; 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> 

wrap2

Datentyp: wrap

Siehe stdWrap-Funktion wrap.

.splitChar möglich.


dataWrap

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>|&nbsp;{field:title}</p>
 
# Ausgabe: <body id="17">
page.bodyTag >
page.bodyTagCObject = TEXT
page.bodyTagCObject.dataWrap = <body id="{tsfe:id}"> 

prepend

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

append

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

wrap3

Datentyp: wrap

Siehe stdWrap-Funktion wrap.

.splitChar möglich.


orderedStdWrap

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 = &nbsp;|&nbsp;
 
  20.wrap = Dies|Lösung
  20.stdWrap.wrap = &nbsp;|&nbsp;
}
# Ausgabe: Dies ist eine flexible Lösung.

outerWrap

Datentyp: wrap / stdWrap

Siehe stdWrap-Funktion wrap.


insertData

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

offsetWrap

Datentyp:


postUserFunc

Datentyp:


postUserFuncInt

Datentyp:


prefixComment

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] -->

editIcons

Datentyp:


editPanel

Datentyp:


cacheStore

ab TYPO3 4.7
Datentyp:


stdWrapPostProcess

hook: Schnittstelle für eigene Funktionen (Extension-Programmierung)


debug

Datentyp: boolean

Zur Fehlersuche: Gibt den Inhalt mit htmlspecialchars() in einem <pre>-Element aus. So muss nicht erst der Quellcode geöffnet werden.


debugFunc

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>|

debugData

Datentyp: boolean

Zur Fehlersuche: Liefert den gesamten aktuellen Inhalt aus $cObj->data in Tabellenform. Bei mehreren current-Werten werden entsprechend viele Tabellen ausgegeben.




Beispiele

Reihenfolge im stdWrap

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>

Template auswählen abhängig von Spalteninhalt

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
    }
  }
}
typo3/about/functions/stdwrap.txt · Zuletzt geändert: 2017/12/12 22:50 von admin