Breaking: #79622 - TypoScript Standard Header has been removed from Fluid Styled Content

See forge#79622

Description

The TypoScript standard header rendering definition lib.stdHeader 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>

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>