Benutzer-Werkzeuge

Webseiten-Werkzeuge


typo3:about:cobject

CARRAY

Steht für Content Array und ermöglicht das Beschreiben von cObjects in nummerierter Reihenfolge. Es ist aber selbst kein echtes cObject, was frei verwendet werden kann. Das Top Level Object page z.B. ist vom Typ carray, wodurch ermöglicht wird, Inhaltselemente nummeriert auszugeben.

EigenschaftDatentypBeschreibung
1,2,3,4 …cObjectEnthält die einzelnen cObjects. Die Reihenfolge der Ausgabe erfolgt anhand der Nummerierung, unabhängig von der Reihenfolge im Setup-Feld.
stdWrap-EigenschaftenstdWrapErmöglicht stdWrap-Funktionen.
<td>-params<td>-paramsNur verfügbar, wenn das cObject diese Eigenschaft unterstützt (z.B. CTABLE)
page = PAGE
page {
  20 = TEXT
  20.value = folge
  10 = TEXT
  10.value = Reihen
  wrap = <p>|</p>
}
# Ausgabe: <p>Reihenfolge</p>

CASE

Ermöglicht eine Fallunterscheidung. Unter key wird üblicherweise ein dynamischer Wert, z.B. ein Datenbankfeld ausgelesen. Das Ergebnis ist der Schlüsselbegriff, der mit den frei benannten cObjects verglichen wird. Die Schlüsselbegriffe können Integer-Werte oder Strings sein, dürfen aber nicht mit den folgenden Begriffen übereinstimmen, da sie Eigenschaften von CASE darstellen: key, if, setCurrent, stdWrap. Das als default benannte cObject wird verwendet, wenn kein anderes cObject mit dem Schlüsselbegriff übereinstimmt.

EigenschaftDatentypBeschreibung
keystring / stdWrapHier wird der Schlüsselbegriff ausgelesen. Üblicherweise werden die stdWrap-Eigenschaften verwendet, also z.B. key.data oder key.field.
[Schlüsselbegriffe]cObjectDie erwarteten, möglichen Ergebnisse von key werden als Namen für cObjects verwendet. Hier kann also die gewünschte Ausgabe definiert werden.
defaultcObjectDieses cObject wird verwendet, wenn die anderen aufgeführten Schlüsselbegriffe nicht mit dem Wert aus key übereinstimmen.
ififIdentisch mit der stdWrap-Funktion if. Wenn das Ergebnis false ist, wird das gesamte CASE-Objekt nicht gerendert.
setCurrentstring / stdWrapErsetzt den aktuellen Wert des Elternelements durch den folgenden String.
stdWrapstdWrapErmöglicht stdWrap-Funktionen für jedes Objekt, egal wie der key-Wert lautet.

Im folgenden Beispiel wird unter key der Benutzername abgefragt. Stimmt er mit johndoe überein, wird ein personalisierter Gruß ausgegeben, sonst mit default ein allgemeiner. Mit der if-Abfrage wird geprüft, ob überhaupt ein Frontend-Benutzer eingeloggt ist. Ist das nicht der Fall, erfolgt auch keine Ausgabe (eine persönliche Ansprache ließe sich natürlich sinnvoller anlegen).

10 = CASE
10 {
  key.data = TSFE:fe_user|user|username
  if.isTrue.data = TSFE:fe_user|user|username
  johndoe = TEXT
  johndoe.value = Willkommen, John Doe!
  default = TEXT
  default.value = Willkommen!
}

COA, COA_INT, COBJ_ARRAY

Steht für Content Object Array. Ermöglicht das Zusammenfassen mehrerer Inhaltselemente, um sie anschließend als eines zu behandeln. COA und COBJ_ARRAY sind einander identisch (COBJ_ARRAY wurde in TYPO3 7.4 entfernt). Bei COA_INT wird der Inhalt nicht im Cache gespeichert.

EigenschaftDatentypBeschreibung
1,2,3,4 …cObjectEnthält die einzelnen cObjects. Die Reihenfolge der Ausgabe erfolgt anhand der Nummerierung, unabhängig von der Reihenfolge im Setup-Feld.
ififIdentisch mit der stdWrap-Funktion if. Wenn das Ergebnis false ist, wird das gesamte COA nicht gerendert.
wrapwrap / stdWrapUmschließt das gesamte COA.
stdWrapstdWrapErmöglicht stdWrap-Funktionen für das COA.

Im ersten Beispiel würde der Seiteninhalt der Spalte 0 durch die if-Abfrage nur eingeloggten Frontend-Benutzern zur Verfügung stehen (andere Vorgehensweisen sind sinnvoller!).

10 = COA
10 {
  if.isTrue.data = TSFE:fe_user|user|username
  10 = TEXT
  10.value = Willkommen!
  10.wrap = <h1>|</h1>
  20 < styles.content.get
}

Das zweite Beispiel mit COA_INT ermöglicht die Ausgabe der aktuellen Uhrzeit zum Zeitpunkt des Seitenaufbaus.

10 = COA_INT
10 {
  10 = TEXT
  10.data = date:H:i:s
}

CONTENT

Erzeugt Inhalt aus Datenbank-Tabellen.

EigenschaftDatentypBeschreibung
selectselectSteuert die SQL-Abfrage auf die Datenbank.
tableTabellennameDie Tabelle, aus der Inhalt ausgelesen werden soll. Üblicherweise ist das tt_content. Erlaubt sind nur Tabellen mit den Präfixen tt_, tx_, ttx_, fe_, user_ sowie die Tabelle pages.
renderObjcObjectDefiniert die Ausgabe der Datensätze. Einzelne Felder können ausgelesen und die Ergebnisse mit stdWrap bearbeitet werden.
Wenn kein renderObj festgelegt wurde, setzt TYPO3 automatisch renderObj < [Tabellenname aus select]. Damit werden die entsprechenden Angaben z.B. für tt_content aus css_styled_content ausgelesen. Wurde css_styled_content nicht inkludiert, erfolgt keine Datenausgabe im Frontend!
wrapwrapUmschließt die gesamte Ausgabe.
stdWrapstdWrapWird nach wrap ausgeführt.
slideinteger / stdWrapVererbung von Inhalt: Wenn durch select kein Inhaltselement gefunden wurde, kann hiermit entlang der rootline nach Inhalt auf anderen Seiten gesucht werden. Stoppt bei der ersten Seite mit Inhalt.
Mögliche Werte sind -1 (bis zur root-Seite), 1 (nur die aktuelle Ebene) und 2 (eine Ebene höher). Nutze -1 bei Kombination mit slide.collect.
slide.collectinteger / stdWrapKann zusätzlich zu .slide verwendet werden, um alle gefundenen Inhaltselemente auf der aktuellen Seite sowie der übergeordneten Seiten auszugeben.
Mögliche Werte sind -1 (bis zur root-Seite) und ein positiver Wert, der die Anzahl der zu durchsuchenden Ebenen angibt.
slide.collectFuzzyboolean / stdWrapFalls bis zur festgelegten Ebene keine Inhalte gefunden wurde, sucht TYPO3 weiter entlang der rootline bis zum ersten Treffer.
slide.collectReverseboolean / stdWrapAngabe nur sinnvoll zusammen mit .slide.collect. Ordnet die Inhaltselemente anders an: Die Inhalte der aktuellen Seite werden zuletzt ausgegeben.
# Allgemeines Beispiel
page.10 = CONTENT
page.10 {
  table = tt_content
  select {
    orderBy = sorting
    where = colPos=0
    select.languageField = sys_language_uid
  }
  renderObj = COA
  renderObj {
    10 = TEXT
    10.field = header
    10.wrap = <h1>|</h1>
    20 = TEXT
    20.field = bodytext
    20.wrap = <p>|</p>
  }
  wrap = <div>|</div>
}
# Vererbung für die rechte Spalte aktivieren
styles.content.getRight.slide = -1

FILE

Mit FILE wird der Inhalt von Dateien eingebunden, es ist daher nicht zu verwechseln mit filelink. Ein Bild würde ein img-Element als Wrap erhalten, die Ausgabe wäre dann identisch mit dem cObject IMAGE. Sinnvoll ist eine Verwendung z.B. von HTML-Dokumenten.

FILE wurde in TYPO3 v9 als deprecated erklärt und mit TYPO3 v10 entfernt! Für Bilder kann weiter das cObject IMAGE (oder ein Fluid-Viewhelper) verwendet werden. Als Alternative zu Textdokumenten kann ggf. FLUIDTEMPLATE verwendet werden.

EigenschaftDatentypBeschreibung
fileresource / stdWrapPfad und Name der gewünschten Datei.
linkWraplinkWrap / stdWrapErmöglicht den linkWrap-Datentyp.
wrapwrap / stdWrapWird nach linkWrap ausgeführt.
stdwrapstdWrapErmöglicht stdWrap-Funktionen. Wird nach linkWrap und wrap ausgeführt.
altText
titleText
string / stdWrapNur für Bilddateien: Fügt das alt bzw. title-Attribut hinzu.
emptyTitleHandlingstring / stdWrapStatt titleText. Mögliche Werte:
useAlt → Verwendet den Inhalt des alt-Attributs als title.
keepEmpty → Ein leeres title-Attribut wird verwendet.
longdescURLstring / stdWrapNur für Bilddateien: Fügt das longdesc-Attribut hinzu.

HTML

Seit 4.6 als deprecated eingestuft und in 6.0 entfernt. Stattdessen TEXT verwenden.

Unterschied zu TEXT: Der stdWrap wird als Eigenschaft von .value bzw. .stdWrap verwendet.

# Identische Ergebnisse:
10 = HTML
10.value = HTML mit value
10.value.case = upper
10.value.wrap = <h1>|</h1>
 
20 = HTML
20.value = HTML mit stdWrap
20.stdWrap.case = upper
20.stdWrap.wrap = <h1>|</h1>
 
30 = TEXT
30.value = Text
30.case = upper
30.wrap = <h1>|</h1>

IMAGE

Gibt ein komplettes Image-Tag mit ausgelesenen Größenangaben zurück. Weitere Attribute lassen sich hinzufügen. stdWrap-Funktionen sind nutzbar.

10 = IMAGE
10.file = fileadmin/images/bild.jpg
# Ausgabe: <img src="fileadmin/images/bild.jpg" width="250" height="100" border="0" alt="" />
 
20 = IMAGE
20 {
  file = fileadmin/images/bild.jpg
  params = class="foo"
  border = 1
  altText = Mein Bild
  titleText = Mein Bild
  longdescURL = http://www.example.org/about-the-image.html
 
  linkWrap = <a href="http://www.example.org">|</a>
  # oder
  imageLinkWrap = 1
  imageLinkWrap {
    # weitere Angaben
  }
 
  wrap = <div>|</div>
  stdWrap {
    # weitere Angaben
  }
}

IMG_RESOURCE

Gibt nur den reinen Dateipfad zum Bild zurück. stdWrap-Funktionen sind nutzbar.

10 = IMG_RESOURCE
10.file = fileadmin/images/bild.jpg
# Ausgabe: fileadmin/images/bild.jpg

LOAD_REGISTER

LOAD_REGISTER gibt selbst keine Daten aus, sondern bietet die Möglichkeit, das Array $GLOBALS['TSFE']->register[] mit eigenen Werten zu belegen. Diese Inhalte können mit getText ausgelesen werden.

Die Werte werden im Register wie bei einem Stapel behandelt: der zuletzt angelegte Inhalt liegt oben. Mit RESTORE_REGISTER wird der oberste Inhalt wieder entfernt. Es muss nicht für jeden neuen Inhalt ein LOAD_REGISTER angelegt werden, die Wertzuweisung kann in einem erfolgen. Aber: Das Entfernen durch RESTORE_REGISTER wird immer auf das gesamte LOAD_REGISTER angewendet!

Auf LOAD_REGISTER kann auch stdWrap angewendet werden, was es z.B. möglich macht, mit cObject umfangreichere Inhalte ins Register zu laden (siehe Beispiel 4).

Beispiel 1: Es werden zwei Farbangaben mit verschiedenen Namen registriert. Vor der Ausgabe des Inhalts mit der blauen Farbe wird der benötigte zweite Wert jedoch mit RESTORE REGISTER wieder entfernt und kann somit nicht ausgelesen werden.

10 = LOAD_REGISTER
10.roteFarbe = color:red;
 
15 = LOAD_REGISTER
15.blaueFarbe = color:blue;
 
20 = TEXT
20.value = Inhalt
20.dataWrap = <p style="{register:roteFarbe}">|</p>
 
30 = RESTORE_REGISTER
 
40 = TEXT
40.value = Inhalt
40.dataWrap = <p style="{register:blaueFarbe}">|</p>

Ausgabe:

<p style="color:red;">Inhalt</p>
<p style="">Inhalt</p>

Beispiel 2: Es werden nacheinander zwei Werte in einem Inhalt gleichen Namens registriert. Der zuletzt angelegte Inhalt wird ausgelesen. Nach dem Anwenden von RESTORE_REGISTER ist immer noch die erste Wertzuweisung vorhanden und wird entsprechend ausgegeben.

10 = LOAD_REGISTER
10.farbe = color:red;
 
15 = LOAD_REGISTER
15.farbe = color:blue;
 
20 = TEXT
20.value = Inhalt
20.dataWrap = <p style="{register:farbe}">|</p>
 
30 = RESTORE_REGISTER
 
40 = TEXT
40.value = Inhalt
40.dataWrap = <p style="{register:farbe}">|</p>

Ausgabe:

<p style="color:blue;">Inhalt</p>
<p style="color:red;">Inhalt</p>

Beispiel 3: Die beiden Wertzuweisungen sind diesmal in einem LOAD_REGISTER definiert. Durch RESTORE_REGISTER werden beide Farbangaben entfernt und können für den zweiten Inhalt nicht mehr ausgelesen werden.

10 = LOAD_REGISTER
10.roteFarbe = color:red;
10.blaueFarbe = color:blue;
 
20 = TEXT
20.value = Inhalt
20.dataWrap = <p style="{register:blaueFarbe}">|</p>
 
30 = RESTORE_REGISTER
 
40 = TEXT
40.value = Inhalt
40.dataWrap = <p style="{register:roteFarbe}">|</p>

Ausgabe:

<p style="color:blue;">Inhalt</p>
<p style="">Inhalt</p>

Beispiel 4: Mit cObject können auch umfangreichere Inhalte zwischengespeichert werden:

10 = LOAD_REGISTER
10.diverseElemente.cObject = COA
10.diverseElemente.cObject {
  10 = TEXT
  10.value = Inhalt
  10.wrap = <p>|</p>
  20 = IMAGE
  20.file = fileadmin/images/gitarre.png
}
 
20 = TEXT
20.data = register:diverseElemente

Ausgabe:

<p>Inhalt</p>
<img src="fileadmin/images/gitarre.png" width="#" height="#" border="0" alt="" />

Beispiel 5: Mit dataWrap lässt sich der Inhalt des Registers um dynamischen Inhalt erweitern. Dies ist auch aus dem Register selbst möglich, sogar aus dem aktuell zu definierenden:

10 = LOAD_REGISTER
10.helloworld = Hello
 
20 = LOAD_REGISTER
20.helloworld.dataWrap = {register:helloworld} world!
 
30 = TEXT
30.data = register:helloworld

Ausgabe:

Hello world!

Hinweis: Würde im letzten Beispiel 40 = RESTORE_REGISTER ausgeführt und anschließend erneut register:helloworld ausgegeben, wäre dieser neue Inhalt wieder nur Hello aus 10. Registereinträge gleichen Namens werden halt nie überschrieben, sondern es wird immer ein neuer Eintrag hinzugefügt.


RECORDS

Ermöglicht die Ausgabe von einzelnen Datensätzen aus beliebigen Tabellen. Die Ausgabe ist abhängig von der Erreichbarkeit der Seite, auf der die Inhalte liegen. Einträge auf versteckten, zeitgesteuerten oder zugriffsgeschützten Seiten werden nicht ausgegeben (diese Prüfung kann mit dontCheckPid deaktiviert werden). Unabhängig davon werden ausgeblendete, zugriffsgeschützte oder als gelöscht markierte Datensätze ebenfalls nicht ausgegeben.

EigenschaftDatentypBeschreibung
tablesListe von TabellenListe der durchsuchten Tabellen.
10.tables = tt_content,pages_language_overlay
sourceListe von UIDs / stdWrapListe der auszugebenden Datensätze. Wenn Inhalte aus mehr als einer Tabelle ausgegeben werden sollen, empfiehlt sich die Nutzung von vorangestellten Tabellennamen (z.B. tt_content_5). Fehlt das Tabellen-Präfix, wird von der ersten Tabelle unter tables ausgegangen.
10.source = tt_content_5,22,pages_language_overlay_10
categoriesListe von KategorienSeit TYPO3 CMS 6.0
dontCheckPidbooleanWenn aktiviert, werden auch Einträge auf nicht erreichbaren Seiten angezeigt. Eine Verlinkung mit typolink schlägt aber weiterhin fehl.
conf.[Tabelle]cObjectHiermit wird das Rendering für die Ausgabe im Frontend gesteuert. Fehlt diese Angabe, wird das Top Level Object mit diesem Tabellennamen verwendet. Bei css_styled_content wird tt_content als CASE-Objekt angelegt, die Ausgabe erfolgt dann je nach CType.
Fehlt auch ein TLO, erfolgt keine Ausgabe!
10.conf.tt_content = TEXT
10.conf.tt_content {
  field = header
}
10.conf.pages_language_overlay = TEXT
10.conf.pages_language_overlay {
  field = title
}
wrapwrap / stdWrapErmöglicht einen Wrap für die einzelnen Datensätze.
stdWrapstdWrapWird nach wrap ausgeführt.

Mit dem folgenden Beispiel wird ein einzelnes Inhaltselement geladen, mit dem Standard-Rendering der angegebenen Tabelle.

10 = RECORDS
10 {
  tables = tt_content
  source = 28
}

Das folgende Beispiel liest die Datensätze 5 und 22 aus tt_content sowie den Datensatz 10 aus pages_language_overlay aus und gibt deren Header bzw. Title in einer Liste aus. Die Header aus tt_content werden zudem verlinkt mit deren PID und einer Sprungmarke zum jeweiligen Inhaltselement.

20 = RECORDS
20 {
  source = ,tt_content_5, 22, pages_language_overlay_10
  tables = ,tt_content, pages_language_overlay
  dontCheckPid = 1
  wrap = <ul>|</ul>
 
  conf.tt_content = TEXT
  conf.tt_content {
    field = header
 
    typolink.parameter = {field:pid}
    typolink.parameter.insertData = 1
    typolink.section = {field:uid}
    typolink.section.insertData = 1
    wrap = <li>|</li>
  }
 
  conf.pages_language_overlay = TEXT
  conf.pages_language_overlay {
    field = title
    wrap = <li>|</li>
  }
}

RESTORE_REGISTER

Entfernt den zuletzt angelegten Wert aus dem Register. Das Entfernen eines frei wählbaren Registereintrags ist nicht möglich. Siehe LOAD_REGISTER. RESTORE_REGISTER hat keine weiteren Eigenschaften, die definiert werden könnten.


TEXT

Entgegen der Norm werden die stdWrap-Eigenschaften bei TEXT nicht unterhalb einer Eigenschaft stdWrap ausgeführt, sondern direkt auf dem root-Level des cObjects TEXT. Siehe HTML.

typo3/about/cobject.txt · Zuletzt geändert: 2020/04/29 20:20 von admin