Attention
TYPO3 v9 has reached its end-of-life September 30th, 2021 and is not maintained by the community anymore. Looking for a stable version? Use the version switch on the top left.
You can order Extended Long Term Support (ELTS) here: TYPO3 ELTS.
CONTENT¶
Note
CONTENT is an object type (= complex data type).
It is a specific cObject data type.
An object with the content type CONTENT is designed to generate content by allowing to finely select records and have them rendered.
What records are visible is controlled by start
and end
fields and
more standard fields automatically. The internal value SYS_LASTCHANGED
is raised to the maximum timestamp value of the respective records.
See also
The cObject RECORDS in contrast is for displaying lists of records from a variety of tables without fine graining.
Comprehensive example¶
See PHP class \TYPO3\CMS\Frontend\ContentObject\ContentContentObject
for details on code level.
Preamble:
# Note: TypoScript (TS) is just another way to define an array of settings which
# is later on INTERPRETED by TYPO3. TypoScript can be written in ANY order
# as long as it leads to the same array. Actual execution order is TOTALLY
# INDEPENDENT of TypoScript code order.
#
# The order of TS in this example however tries to reflect execution order.
# The denoted steps are taking place in that order at execution time.
Condensed form:
1 = CONTENT
1 {
if {
}
table = tt_content
select {
pidInList = this
orderBy = sorting
}
renderObj = < tt_content
slide = 0
slide {
collect = 0
collectReverse = 0
collectFuzzy = 0
}
wrap =
stdWrap =
}
Expanded form:
1 = CONTENT
// STEP 1: do nothing if 'if' evaluates to false
1.if {
# ifclause =
}
// STEP 2: define parameters
1.table = tt_content # default='' #stdWrap
1.select {
pidInList = this
orderBy = sorting
}
# renderObj = <TABLEVALUE # default!
1.renderObj =
# slide = 0 # default! #stdWrap
1.slide = -1
# slideCollect = 0 # default! #stdWrap
1.slide.collect =
# slideCollectReverse = false # default! #stdWrap
1.slide.collectReverse =
# slideCollectFuzzy = false # default! #stdWrap
1.slide.collectFuzzy =
// STEP 3: find all records
// STEP 4: apply the renderObj to each record and collect
// the results as string 'totalResult'
// STEP 5: Apply wrap to the 'totalResult'
1.wrap = | # default!
// STEP 6: Apply stdWrap to the 'totalResult'
1.stdWrap = # default! #stdWrap
// STEP 6: Return 'totalResult'
select¶
Property
select
Data type
Description
The SQL-statement, a SELECT query, is set here, including automatic visibility control.
table¶
Property
table
Data type
table name /stdWrap
Description
The table, the content should come from. Any table can be used; a check for a table prefix is not done.
In standard configuration this will be tt_content
.
renderObj¶
Property
renderObj
Data type
Default
< [table name]
Description
The cObject used for rendering the records resulting from the query in .select.
If renderObj
is not set explicitly, then < [table name]
is used. So
in this case the configuration of the according table is being copied.
See the notes on the example below.
slide¶
Property
slide
Data type
integer /stdWrap
Description
If set and no content element is found by the select command, the rootLine will be traversed back until some content is found.
Possible values are -1
(slide back up to the siteroot), 1
(only
the current level) and 2
(up from one level back).
Use -1
in combination with collect.
- slide.collect
(integer /stdWrap) If set, all content elements found on the current and parent pages will be collected. Otherwise, the sliding would stop after the first hit. Set this value to the amount of levels to collect on, or use
-1
to collect up to the siteroot.- slide.collectFuzzy
(boolean /stdWrap) Only useful in collect mode. If no content elements have been found for the specified depth in collect mode, traverse further until at least one match has occurred.
- slide.collectReverse
(boolean /stdWrap) Reverse order of elements in collect mode. If set, elements of the current page will be at the bottom.
Note: The sliding will stop when reaching a folder.
See $cObj->checkPid_badDoktypeList
.
CONTENT object example 1¶
Here is an example of the CONTENT object:
1 = CONTENT
1.table = tt_content
1.select {
pidInList = this
orderBy = sorting
}
Since in the above example .renderObj is not set explicitly, TYPO3
will automatically set 1.renderObj < tt_content
, so that renderObj
will reference the TypoScript configuration of tt_content
. The
according TypoScript configuration will be copied to renderObj
.
CONTENT object example 2¶
Here is an example of record-rendering objects:
// Configuration for records with the "field" type value
// (often "CType") set to "header"
tt_content.header.default {
10 = TEXT
10.stdWrap.field = header
# ...
}
// Configuration for records with the "field" type value
// (often "CType") set to "bullets"
// If field "layout" is set to "1" or "2", a special configuration is used,
// else defaults are being used.
tt_content.bullets.subTypeField = layout
tt_content.bullets.default {
# ...
}
tt_content.bullets.1 {
# ...
}
tt_content.bullets.2 {
# ...
}
// This is what happens if the "field" type value does not match any of the above
tt_content.default.default {
# ...
}