Data processors
The extension provides three data processors that integrate with the standard
TypoScript
data chain inside
HANDLEBARSTEMPLATE
content objects.
process-variables
Class:
\CPSIT\
Processes a
variables configuration block — exactly like the
top-level
variables of
HANDLEBARSTEMPLATE — within
a data processor chain. This is most useful when combined with other processors
such as
database-, allowing per-record variable processing.
Data sources
When resolving configuration values, the processor draws from four data sources, tried in the order listed:
| Data source identifier | Contains |
|---|---|
content | Current record's field values |
content | Top-level
HANDLEBARSTEMPLATE config |
processed | Accumulated output from previous processors |
processor | This processor's own config block |
This is why options like
table and
as can be set
by an outer processor and automatically picked up by a nested
process- without being repeated explicitly.
The
pre and
post hooks receive
the same collection, so they have access to all four sources as well.
Standalone usage
tt_content.my_element = HANDLEBARSTEMPLATE
tt_content.my_element {
templateName = MyElement
dataProcessing {
10 = process-variables
10 {
variables {
header = TEXT
header.field = header
teaser = TEXT
teaser.field = bodytext
teaser.parseFunc < lib.parseFunc_RTE
}
}
}
}
Nested inside another processor
dataProcessing {
10 = database-query
10 {
table = tx_myext_domain_model_item
as = items
dataProcessing {
10 = process-variables
10 {
table = tx_myext_domain_model_item
as = item
variables {
title = TEXT
title.field = title
body = TEXT
body.field = bodytext
body.parseFunc < lib.parseFunc_RTE
}
}
}
}
}
Properties
variables- Variables to process. Same syntax as the top-level
variablesinHANDLEBARSTEMPLATE. table- Database table of the record to use as the data source for field lookups. Defaults to the current content element table.
as- Target key in the processed data array. When set, the processed variables are stored under this key. When omitted, the processed variables replace (or merge into) the root of the processed data.
merge- Boolean. When
1andasis omitted, the processed variables are merged into the existing processed data rather than replacing it. Whenasis set and the key already holds an array, the processed variables are merged into that array. Default:0. if- Standard TypoScript
ifcondition. When the condition evaluates to false, the processor is skipped and the processed data is returned unchanged. preProcessing - Data source aware processors run before
variablesare processed. postProcessing - Data source aware processors run after
variablesare processed.
resolve-markers
Class:
\CPSIT\
Replaces marker-style keys (e.g.,
###NAV_) in the
processed data with the values stored under those keys. The typical pattern is
to use a marker as a named placeholder early in the chain — either as the
as target of a preceding processor or directly in a
variables entry — and then resolve all markers to clean variable
names in a final step. This keeps intermediate processors decoupled from the
variable names the template expects.
tt_content.my_element = HANDLEBARSTEMPLATE
tt_content.my_element {
templateName = MyElement
dataProcessing {
# Declare the expected output slots early using markers — these
# names will become the final template variables
10 = menu
10 {
as = ###mainNavigation###
levels = 2
}
20 = menu
20 {
as = ###footerLinks###
special = directory
special.value = 42
}
# Resolve all markers to clean variable names in one final step
90 = resolve-markers
90.removeNonMatchingMarkers = 1
}
}
After processing, the template receives
main and
footer as clean variable names. The markers at the top of
the chain serve as upfront documentation of what the template expects, while
the processors that follow fill those slots independently.
Properties
pattern- Regular expression used to identify marker keys. The first capture
group becomes the resolved variable name.
Default:
###(.*?)### removeNon Matching Markers - Boolean. When
1, variable keys that still match the marker pattern after resolution (i.e., no value was found for them) are removed from the processed data. Default:0.
unflatten-variable-names
Class:
\CPSIT\
Converts dot-separated flat variable names into nested arrays. This is useful
when other processors set their
as key to a dotted path,
representing the intended position in a nested data structure.
dataProcessing {
10 = menu
10 {
as = page.nav.mainMenu
}
20 = menu
20 {
as = page.nav.footerLinks
special = directory
special.value = 42
}
90 = unflatten-variable-names
}
After processing, the template receives a nested
page object:
{{#each page.nav.mainMenu}}
<a href="{{link}}">{{title}}</a>
{{/each}}
The processor has no configuration properties and operates on the entire processed data array.