Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Nächste Überarbeitung | Vorherige Überarbeitung | ||
typo3:about:functions:split [2014/03/04 21:00] – angelegt admin | typo3:about:functions:split [2015/12/03 19:32] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== split ====== | ====== split ====== | ||
- | Mit '' | + | Mit '' |
+ | |||
+ | Die erhaltenen Werte werden | ||
+ | |||
+ | TYPO3 speichert die Ergebnisse von split zudem im Register // | ||
===== Eigenschaften von split ===== | ===== Eigenschaften von split ===== | ||
^Eigenschaft^Datentyp^Beschreibung^ | ^Eigenschaft^Datentyp^Beschreibung^ | ||
- | ^token|string / stdWrap| | + | ^token|string / stdWrap|Der Wert dient als Trennzeichen zwischen den einzelnen Werten und kann ein einzelnes Zeichen oder eine Zeichenkette sein. Mit '' |
- | ^max|string / stdWrap| | + | 10 = TEXT |
- | ^min|string / stdWrap| | | + | 10.value = eins,zwei,drei |
- | ^returnKey|integer / stdWrap| | | + | 10.split.token = , |
- | ^cObjNum|// | + | [...] |
- | ^1,2,3,4|CARRAY / stdWrap| | | + | |
- | ^wrap|wrap +optionSplit / stdWrap| | | + | |
- | ===== Beispiele | + | 10.value |
+ | 10.split.token | ||
+ | [...] | ||
+ | |||
+ | # ' | ||
+ | 10 = TEXT | ||
+ | 10.value ( | ||
+ | eins | ||
+ | zwei | ||
+ | drei | ||
+ | ) | ||
+ | 10.split.token.char | ||
+ | [...] | ||
+ | </ | ||
+ | ^max|integer / stdWrap|Gibt die maximale Anzahl der ausgegebenen Werte an. <code typoscript> | ||
+ | 10 = TEXT | ||
+ | 10.value = eins, | ||
+ | 10.split { | ||
+ | token = , | ||
+ | cObjNum = 1 | ||
+ | max = 3 | ||
+ | 1.current = 1 | ||
+ | 1.wrap = |+ | ||
+ | } | ||
+ | # Ausgabe: eins+zwei+drei+ | ||
+ | </ | ||
+ | ^min|integer / stdWrap|Gibt die Mindestanzahl der ausgegebenen Werte an. Dies bedeutet nicht, dass bei weniger Werten keine Ausgabe erfolgt, sondern, dass bei zu wenig Werten die Anweisungen im cObj trotzdem durchgeführt werden! Die Angaben in '' | ||
+ | 10 = TEXT | ||
+ | 10.value = eins, | ||
+ | 10.split { | ||
+ | token = , | ||
+ | cObjNum = 1 | ||
+ | min = 9 | ||
+ | 1.current = 1 | ||
+ | 1.wrap = |+ | ||
+ | } | ||
+ | # Ausgabe: eins+zwei+drei+vier+fünf+sechs++++ | ||
+ | </ | ||
+ | ^returnKey|integer / stdWrap|Wenn diese Eigenschaft benutzt wird, werden nicht alle Werte nacheinander geparst, sondern nur der hier angegebene Wert **direkt** ausgegeben. '' | ||
+ | 10 = TEXT | ||
+ | 10.value = eins, | ||
+ | 10.split { | ||
+ | token = , | ||
+ | returnKey = 0 | ||
+ | } | ||
+ | # Ausgabe: eins | ||
+ | </ | ||
+ | ^cObjNum|// | ||
+ | cObjNum = 1||2 |*| 5||3 |*| 4||6 | ||
+ | </ | ||
+ | ^1, | ||
+ | 10 = TEXT | ||
+ | 10.value = eins, | ||
+ | 10.split { | ||
+ | token = , | ||
+ | cObjNum = 1 | ||
+ | 1.10 = TEXT | ||
+ | 1.10.current = 1 | ||
+ | 1.20 = TEXT | ||
+ | 1.20.value = und | ||
+ | 1.20.noTrimWrap = | | | | ||
+ | } | ||
+ | # Ausgabe: eins und zwei und drei und vier und | ||
+ | </ | ||
+ | ^wrap|wrap +optionSplit / stdWrap|Umschließt die fertigen cObjects mit einem Wrap. Das Anwenden von '' | ||
+ | 10 = TEXT | ||
+ | 10.value = eins, | ||
+ | 10.split { | ||
+ | token = , | ||
+ | cObjNum = 1 | ||
+ | 1.current = 1 | ||
+ | wrap = |*| < | ||
+ | } | ||
+ | # Ausgabe: < | ||
+ | </ | ||
+ | ===== Einfaches Beispiel | ||
<code typoscript> | <code typoscript> | ||
Zeile 39: | Zeile 116: | ||
===== split mit optionSplit ===== | ===== split mit optionSplit ===== | ||
- | Eine genaue Beschreibung von optionSplit findet sich [[typo3: | + | Eine genaue Beschreibung von optionSplit findet sich [[typo3: |
+ | |||
+ | Alternativ kann auch ein eigener Wert mit '' | ||
<code typoscript> | <code typoscript> | ||
- | page = PAGE | + | 10 = TEXT |
- | page { | + | 10.value = eins+zwei+drei+vier+fünf |
- | | + | 10.split { |
- | 10.value = eins,zwei,drei,vier,fünf | + | token = + |
- | 10.split { | + | cObjNum = 1 |*| 2 |*| 3 |
- | token = , | + | 1.current = 1 |
- | cObjNum = 1 |*| 2 |*| 3 | + | 1.wrap = <span style=" |
- | 1.current = 1 | + | 2.current = 1 |
- | 1.wrap = <span style=" | + | 2.wrap = <span style=" |
- | 2.current = 1 | + | 3.10 = TEXT |
- | 2.wrap = <span style=" | + | 3.10.current = 1 |
- | 3.current = 1 | + | 3.10.wrap = <span style=" |
- | 3.wrap = <span style=" | + | |
- | | + | 3.20.value = sechs |
- | } | + | 3.20.wrap = <span style=" |
+ | } | ||
</ | </ | ||
< | < | ||
Ergebnis: | Ergebnis: | ||
- | <span style=" | + | <span style=" |
</ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== register: | ||
+ | |||
+ | Die Ergebnisse von '' | ||
+ | |||
+ | Da immer bei Null angefangen wird zu zählen, müssen im ersten Schritt die Werte von // | ||
+ | Im zweiten Schritt werden die so berechneten Werte mit einem '' | ||
+ | |||
+ | |||
+ | <code typoscript> | ||
+ | 10 = TEXT | ||
+ | 10.value = eins, | ||
+ | 10.split { | ||
+ | token = , | ||
+ | cObjNum = 1 | ||
+ | 1.10 = LOAD_REGISTER | ||
+ | 1.10.SPLIT_COUNT { | ||
+ | cObject = TEXT | ||
+ | cObject.data = register: | ||
+ | cObject.wrap = |+1 | ||
+ | prioriCalc = intval | ||
+ | } | ||
+ | 1.20 = TEXT | ||
+ | 1.20.current = 1 | ||
+ | 1.20.noTrimWrap = | || | ||
+ | 1.20.dataWrap = < | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Ausgabe: | ||
+ | <code html> | ||
+ | <p>1 = eins</ | ||
+ | <p>2 = zwei</ | ||
+ | <p>3 = drei</ | ||
+ | <p>4 = vier</ | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== Inhalte aus der Datenbank mit split verarbeiten ===== | ||
+ | |||
+ | Im folgenden Beispiel werden die Überschriften aller Inhaltselemente einer Seite nummeriert ausgegeben. Auf der Seite enthalten sind Inhaltselemente mit den Überschriften " | ||
+ | |||
+ | |||
+ | * **temp.headlines: | ||
+ | - Aus der Datenbanktabelle // | ||
+ | - Unter '' | ||
+ | - Unter '' | ||
+ | - Außerdem wird im renderObj ein wrap hinzugefügt, | ||
+ | - Mit '' | ||
+ | - Das Gesamtergebnis des cObjects CONTENT wird als String in '' | ||
+ | |||
+ | __Das Ergebnis bis hierhin:__ Überschrift**STOP**Headline mit Stop als Wert**STOP**Schlagzeile\\ | ||
+ | (zur besseren Lesbarkeit sind die Trennzeichen fett gesetzt) | ||
+ | |||
+ | * **page.10: | ||
+ | - Der Inhalt von '' | ||
+ | - '' | ||
+ | - Wie im oberen Beispiel wird der Wert von SPLIT_COUNT um eins erhöht und anschließend mit '' | ||
+ | - Mit '' | ||
+ | |||
+ | <code typoscript> | ||
+ | temp.headlines = TEXT | ||
+ | temp.headlines.cObject = CONTENT | ||
+ | temp.headlines.cObject { | ||
+ | table = tt_content | ||
+ | select { | ||
+ | orderBy = sorting | ||
+ | where = colPos=0 | ||
+ | #pidInList = 28 | ||
+ | } | ||
+ | renderObj = TEXT | ||
+ | renderObj { | ||
+ | field = header | ||
+ | required = 1 | ||
+ | wrap = STOP| | ||
+ | } | ||
+ | stdWrap.substring = 4 | ||
+ | } | ||
+ | |||
+ | page = PAGE | ||
+ | page.10 < temp.headlines | ||
+ | page.10.split { | ||
+ | token = STOP | ||
+ | cObjNum = 1 | ||
+ | 1.10 = LOAD_REGISTER | ||
+ | 1.10.SPLIT_COUNT { | ||
+ | cObject = TEXT | ||
+ | cObject.data = register: | ||
+ | cObject.wrap = |+1 | ||
+ | prioriCalc = intval | ||
+ | } | ||
+ | 1.20 = TEXT | ||
+ | 1.20.current = 1 | ||
+ | 1.20.noTrimWrap = | || | ||
+ | 1.20.dataWrap = < | ||
+ | 1.20.required = 1 | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Ausgabe: | ||
+ | <code html> | ||
+ | <p>1 = Überschrift</ | ||
+ | <p>2 = Headline mit Stop als Wert</ | ||
+ | <p>3 = Schlagzeile</ | ||
+ | </ |