Breaking: #79622 - TypoScript Standard Header has been removed from Fluid Styled Content
See forge#79622
Description
The TypoScript standard header rendering definition lib.
has been
introduced in CSS Styled Content to reference it across multiple content
elements to simplify maintenance.
For Fluid Styled Content a workaround for compatibility with CMS 7 has been introduced to simplify migration. However, it only renders the header and misses all frames, and additional are options necessary to generate a streamlined rendering output if the content element layout was not implemented correctly.
Example
TypoScript Configuration
tt_content.simple_content = COA
tt_content.simple_content {
10 < lib.stdHeader
20 = TEXT
20.field = bodytext
}
Generated Output
<header>
<h1>Nunc vel libero dignissim</h1>
</header>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed cursus
vel lectus vel placerat. Suspendisse non metus sed lorem sagittis
consequat non vel nulla.
</p>
Expected Output
<div id="c53" class="frame frame-default frame-type-header frame-layout-0">
<a id="c62"></a>
<header>
<h1>Nunc vel libero dignissim</h1>
</header>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed cursus
vel lectus vel placerat. Suspendisse non metus sed lorem sagittis
consequat non vel nulla.
</p>
<p>
<a href="#top">Top</a>
</p>
</div>
Impact
Content elements using lib.stdHeader will miss the header in the frontend output.
Affected Installations
All installations that have content elements relying on lib.stdHeader and use Fluid Styled Content as content rendering definition.
Migration
To fully embrace support for Fluid Styled Content the setup needs to be changed. This is a very simple example, it is highly recommended to migrate content elements and plugins to only use fluid. The default fluid layout has all information necessary to render the header, frame and everything else correctly. That means that you do not need to care about streamlined rendering.
Example for Content Element with TypoScript Rendering
If you need TypoScript to process the rendering of your content element the recommended way is to use a variable to pass the rendering to fluid.
TypoScript Setup
tt_content.simple_content =< lib.fluidContent
tt_content.simple_content {
templateName = SimpleContent
templateRootPaths.12022017 = EXT:my_simple_content/Resources/Private/Templates/
variables.content = COA
variables.content {
10 = TEXT
10.field = bodytext
}
}
Fluid Template
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Default" />
<f:section name="Main">
<f:format.raw>{content}</f:format.raw>
</f:section>
</html>
Recommended Content Element Rendering
It's highly recommended to migrate content elements to embrace fluid and streamline the rendering definitions.
TypoScript Setup
tt_content.simple_content =< lib.fluidContent
tt_content.simple_content {
templateName = SimpleContent
templateRootPaths.12022017 = EXT:my_simple_content/Resources/Private/Templates/
}
Fluid Template
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Default" />
<f:section name="Main">
<f:format.html>{data.bodytext}</f:format.html>
</f:section>
</html>
Customize header rendering
Section in the default layout are optional and have fallbacks. To change
for example the header rendering, place a Header
section in a template
and place your adjustments. For unsetting the header simply place an empty Header
section.
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Default" />
<f:section name="Header">
<h1>{data.header}</h1>
</f:section>
<f:section name="Main">
<f:format.html>{data.bodytext}</f:format.html>
</f:section>
</html>