FLUIDTEMPLATE¶
An object of type FLUIDTEMPLATE combines TypoScript with the Fluid templating engine.
Changed in version 11.0: The content object FLUIDTEMPLATE has replaced TEMPLATE which was removed with version 11.0.
FLUIDTEMPLATE generates content using Fluid templates. It can be used in content elements or to generate content within the top-level object page (see the example on this page).
Data available in Fluid templates¶
The following data will be available in the called Fluid template:
The content of the current
data
array.On page level it contains the current page record.
If the
FLUIDTEMPLATE
is used in the context of the Fluid ViewHelper<f:cObject>
it contains the data set in the Fluid Property data.If called in the context of Extbase it contains the data assigned to the view in the Controller.
The
settings
array set by the parameter settingsVariables set by the setting variables
Additional data retrieved by data processors
You can use the ViewHelper debug to
receive a complete listing of the available data using the magic {_all}
variable:
<f:debug>{_all}</f:debug>
Properties¶
dataProcessing¶
- dataProcessing¶
- Data type
array of class references by full namespace
Add one or multiple processors to manipulate the
$data
variable of the currently rendered content object, like tt_content or page. The sub- propertyoptions
can be used to pass parameters to the processor class.Note
The content was moved to the subpage dataProcessing.
extbase.controllerActionName¶
extbase.controllerExtensionName¶
- extbase.controllerExtensionName¶
- Data type
string /stdWrap
Sets the extension name of the controller.
Tip
Setting this allows you to skip the
extensionName
argument for the f:translate and the f:uri.resource ViewHelpers.This requires you to put translations and public images in the usual paths in your extension.
extbase.controllerName¶
extbase.pluginName¶
file¶
- file¶
- Data type
string /stdWrap
The fluid template file. It is an alternative to ".template" and is used only, if ".template" is not set.
Example:
EXT:site_package/Configuration/TypoScript/setup.typoscript¶page = PAGE page { 10 = FLUIDTEMPLATE 10 { file = EXT:site_package/Resources/Private/Templates/Page/MyTemplate.html } }
format¶
layoutRootPath¶
- layoutRootPath¶
- Data type
file path /stdWrap
Sets a specific layout path, usually
EXT:some_extension/Resources/Private/Layouts/
or a folder below that path.Note
It is recommended to use layoutRootPaths (mind the plural "s") as it can be easily extended by custom templates provided by the sitepackage.
layoutRootPaths¶
- layoutRootPaths¶
- Data type
array of file paths with stdWrap
Note
Mind the plural -s in "layoutRootPaths"!
Note
If you want to extend layoutRootPaths conditionally, best practice is to use Conditions instead of the "if" function.
Used to define several paths for layouts, which will be tried in reversed order (the paths are searched from bottom to top). The first folder where the desired layout is found, is used. If the array keys are numeric, they are first sorted and then tried in reversed order.
Example:
EXT:site_package/Configuration/TypoScript/setup.typoscript¶page { 10 = FLUIDTEMPLATE 10 { file = EXT:site_default/Resources/Private/Templates/Main.html layoutRootPaths { 10 = EXT:site_default/Resources/Private/Layouts 20 = EXT:site_modification/Resources/Private/Layouts } } }
If property layoutRootPath (singular) is also used, it will be placed as the first option in the list of fall back paths.
partialRootPath¶
- partialRootPath¶
- Data type
file path /stdWrap
Sets a specific partial path, usually
EXT:some_extension/Resources/Private/Partials/
or a folder below that path.Note
It is recommended to use partialRootPaths (mind the plural "s") as it can be easily extended by custom templates provided by the sitepackage.
partialRootPaths¶
- partialRootPaths¶
- Data type
array of file paths with stdWrap
Note
Mind the plural -s in "partialRootPaths"!
Note
If you want to extend partialRootPaths conditionally, best practice is to use Conditions instead of the "if" function.
Used to define several paths for partials, which will be tried in reversed order. The first folder where the desired partial is found, is used. The keys of the array define the order.
See layoutRootPaths for more details.
settings¶
- settings¶
- Data type
array of keys
Sets the given settings array in the fluid template. In the view, the value can then be used.
Example:
EXT:site_package/Configuration/TypoScript/setup.typoscript¶page = PAGE page { 10 = FLUIDTEMPLATE 10 { file = EXT:site_default/Resources/Private/Templates/MyTemplate.html settings { copyrightYear = 2013 } } }
To access copyrightYear in the template file use this:
{settings.copyrightYear}
Apart from setting a key-value pair as done in the example, you can also reference objects or access constants as well.
template¶
- template¶
- Data type
Use this property to define a content object, which should be used as template file. It is an alternative to ".file"; if ".template" is set, it takes precedence.
Warning
The
FILE
object type has been removed in TYPO3 v10. As the.template
property usedFILE
, you should generally check your code if using this and switch to using .templateName with .templateRootPaths or use .file.
templateName¶
- templateName¶
- Data type
string /stdWrap
This name is used together with the set format to find the template in the given templateRootPaths. Use this property to define a content object, which should be used as template file. It is an alternative to
.file
. If.templateName
is set, it takes precedence.Example 1:
EXT:site_package/Configuration/TypoScript/setup.typoscript¶lib.stdContent = FLUIDTEMPLATE lib.stdContent { templateName = Default layoutRootPaths { 10 = EXT:frontend/Resources/Private/Layouts 20 = EXT:sitemodification/Resources/Private/Layouts } partialRootPaths { 10 = EXT:frontend/Resources/Private/Partials 20 = EXT:sitemodification/Resources/Private/Partials } templateRootPaths { 10 = EXT:frontend/Resources/Private/Templates 20 = EXT:sitemodification/Resources/Private/Templates } variables { foo = TEXT foo.value = bar } }
Example 2:
EXT:site_package/Configuration/TypoScript/setup.typoscript¶lib.stdContent = FLUIDTEMPLATE lib.stdContent { templateName = TEXT templateName.stdWrap { cObject = TEXT cObject { data = levelfield:-2,backend_layout_next_level,slide override.field = backend_layout split { token = frontend__ 1.current = 1 1.wrap = | } } ifEmpty = Default } layoutRootPaths { 10 = EXT:frontend/Resources/Private/Layouts 20 = EXT:sitemodification/Resources/Private/Layouts } partialRootPaths { 10 = EXT:frontend/Resources/Private/Partials 20 = EXT:sitemodification/Resources/Private/Partials } templateRootPaths { 10 = EXT:frontend/Resources/Private/Templates 20 = EXT:sitemodification/Resources/Private/Templates } variables { foo = bar } }
templateRootPath¶
- templateRootPath¶
- Data type
file path /stdWrap
Sets a specific template path, usually
EXT:some_extension/Resources/Private/Templates/
or a folder below that path.Note
It is recommended to use templateRootPaths (mind the plural "s") as it can be easily extended by custom templates provided by the sitepackage.
templateRootPaths¶
- templateRootPaths¶
- Data type
array of file paths with stdWrap
Note
Mind the plural -s in "templateRootPaths"!
Note
If you want to extend templateRootPaths conditionally, best practice is to use Conditions instead of the "if" function.
Used to define several paths for templates, which will be tried in reversed order (the paths are searched from bottom to top). The first folder where the desired layout is found, is used. If the array keys are numeric, they are first sorted and then tried in reversed order.
Useful in combination with the templateName property.
Example:
EXT:site_package/Configuration/TypoScript/setup.typoscript¶page { 10 = FLUIDTEMPLATE 10 { templateName = Default templateRootPaths { 10 = EXT:sitedesign/Resources/Private/Templates 20 = EXT:sitemodification/Resources/Private/Templates } } }
Example¶
The Fluid template in
EXT:site_default/Resources/Private/Templates/MyTemplate.html
could look
like this:
<h1>{data.title}<f:if condition="{data.subtitle}">, {data.subtitle}</f:if></h1>
<h3>{mylabel}</h3>
<f:format.html>{data.bodytext}</f:format.html>
<p>© {settings.copyrightYear}</p>
You could use it with a TypoScript code like this:
page = PAGE
page.10 = FLUIDTEMPLATE
page.10 {
templateName = MyTemplate
templateRootPaths {
10 = EXT:site_default/Resources/Private/Templates
}
partialRootPaths {
10 = EXT:site_default/Resources/Private/Partials
}
variables {
mylabel = TEXT
mylabel.value = Label coming from TypoScript!
}
settings {
# Get the copyright year from a TypoScript constant.
copyrightYear = {$year}
}
}
As a result the page title and the label from TypoScript will be inserted as headlines. The copyright year will be taken from the TypoScript constant "year".
See also