Important: The study plan renders through the Default layout
Description
The study plan content element offers editors the Appearance tab
with the layout, the frame, the space before and the space after, and none of
those choices had any effect. The element also carried no
id="c<uid>"
anchor, so a
link pointing at it landed on the page and not on the element, and a
Section Index menu built a link to an anchor that did not exist.
The cause was the template. Academic rendered its markup
directly, and the Header/ partial with it, without a Fluid layout.
The frame wrapper, the spacing classes, the anchor and the footer link are
rendered by the Layouts/ layout of whichever package
provides
lib.: EXT:fluid_styled_content,
or a site package such as
bk2k/bootstrap-package
, which renders a
frame of its own. A template without that layout gets none of them.
The template now starts with
<f: and wraps its
markup in an
<f:. The explicit render of
Header/ is gone, because the layout renders the header section
itself.
Impact
The rendered markup changes on every installation, whether or not the Appearance tab was ever touched:
<div class="academic-study-plan container" data-study-plan="1">
<header><h2>Study plan B.Sc.</h2></header>
<nav>...</nav>
</div>
<div id="c1" class="frame frame-default frame-type-academic_study_plan frame-layout-0">
<header><h2>Study plan B.Sc.</h2></header>
<div class="academic-study-plan container" data-study-plan="1">
<nav>...</nav>
</div>
</div>
Two things moved: the element gained the frame wrapper around it, and the header
moved out of
.academic- to above it.
The settings of the two Appearance palettes start taking effect, and on an installation whose editors used that tab some of them were configured long ago:
- Layout, Frame, Space Before and
Space After, the four fields of the frames palette,
now render their classes, so rulers and spacing appear where they were
chosen and a layout variant reaches the stylesheet as
frame-.layout-<n> - The element carries its
id="c<uid>", so a link to it jumps to it. That also repairs Section Index: the menu element always listed the study plan, but linked to an anchor that did not exist. - Link to top renders the to top link of the layout's footer section. It is the one addition that shows up with no CSS involved.
The interaction is unchanged. The filter, the semester toggles and the module dialogs address the markup inside the wrapper, which is untouched, and the JavaScript contract is the same.
Migration
A stylesheet that addressed the header inside the study plan wrapper stops matching it. The header is now a sibling of that wrapper rather than a child:
.academic-study-plan header h2 { ... }
.frame-type-academic_study_plan header h2 { ... }
Dropping the ancestor works as well where the selector is specific enough without it. Nothing else has to be changed.
Affected Installations
Every installation that renders the study plan content element with the shipped
template, on TYPO3 v12 and v13 alike. The Layouts/ of
EXT:fluid_styled_content is identical on both. An installation that
ships its own copy of Academic keeps rendering that copy
and is unaffected. That includes a copy that was made to add the layout in the
first place, which can be dropped once nothing else in it was changed.
One case is worth naming because the header does not move there but disappears:
a site package that provides its own
lib. whose
Default layout renders no
Header
section at all. Such a layout
suppresses the header of every core content element as well, so it is a choice
that site made. The study plan now follows it.