Text&Medien mit fluid_styled_content – Checkbox „In Menüs zeigen“ verschwunden

Wenn man mit TYPO3 7 und fluid_styled_content arbeitet, so stellt man möglicherweise eines Tages fest, dass beim Inhaltelement „Text & Medien“ unter „Zugriff“ die ehemals hilfreiche Checkbox „In Menüs zeigen“ nicht mehr vorhanden ist. Damit konnte man Elemente in einer Abschnittsübersicht ausblenden. Heutzutage muss man sich anders behelfen.

Und zwar bearbeitet man hierfür das für die Darstellung des Menüs zuständige Fluidtemplate. Aus der Systemextension „fluid_styled_content“ holt man sich zunächst die entsprechende Vorlage (typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-3.html) in den fileadmin Ordner. Am besten holt man sich gleich alle Fluidtemplates (von hier: typo3/sysext/fluid_styled_content/Resources/Private/) und zwar mit folgendem TypoScript (Constants):

styles.templates {
  templateRootPath = fileadmin/templates/fluid/Templates
  partialRootPath = fileadmin/templates/fluid/Partials
  layoutRootPath = fileadmin/templates/fluid/Layouts
}

In unserem Beispiel geht man nun an die Datei fileadmin/templates/fluid/Partials/Menu/Type-3.html und platziert innerhalb der for-Schleife <f:for each="{contentElements}" as="contentElement">) folgende Condition:

<f:if condition="{0:contentElement.CType} == {0:'header'}">
...
</f:if>

Damit hat man erreicht, dass nur noch solche Inhaltselemente in die Anzeige der Abschnittsübersicht aufgenommen werden, die vom Typ „Überschrift“ sind. Die nicht mehr vorhandene Checkbox „In Menüs zeigen“ wird in diesem Beispiel also durch eine andere Logik ersetzt. Hier muss man erfinderisch sein. Man könnte zum Beispiel auch die Selectbox „Layout“ verwenden und das Element in der Abschnittsübersicht nur anzeigen lassen, wenn hier „Layout1“ ausgewählt ist. Dann sähe die Condition so aus:

<f:if condition="{0:contentElement.layout} == {0:'1'}">
...
</f:if>

Um das für die Redakteurinnen klarer zu machen, kann man im PageTS die Bezeichnung umbenennen:

TCEFORM.tt_content.layout.altLabels.1 = nicht im Menü anzeigen

Übrigens ist der Eintrag der Checkbox durchaus in der Datenbank noch vorhanden – d.h. man könnte den Typ des Datensatzes auf „Text“ umstellen, das Häkchen setzen und danach den Typ wieder umstellen. Funktionieren tut das, aber schön ist es nicht.

Abschnittsübersicht in Fluidtemplates und colPos

Standardmäßig funktioniert die Abschnittsübersicht nur mit colPos = 0, das heißt, wenn der Inhalt in der colPos 0 gerendert werden.
Das ist in Zeiten von Backendlayouts natürlich nicht immer der Fall. Man muss also möglicherweise eingreifen und zwar in der Datei Partials/Menu/Type-3.html:

<ce:menu.section pageUid="{page.uid}" as="contentElements" type="header" column="1">

Obiges Beispiel ermöglicht die Darstellung eines Menüs, sofern sich der Inhalt in der colPos 1 befindet.
Link

Fluidtemplates und Layout-Klassen um Contentelemente

Weil wir schon beim Thema sind: um das „Layout“, das unter „Erscheinungsbild“ in den Fluid-Datensätzen vorhanden ist, zu nutzen, muss man ebenfalls in die HTML Vorlagen eingreifen und zwar folgendermaßen:

<div id="c{data.uid}"  class="{f:if(condition: '{data.layout} == 1', then: 'myclass-1')}{f:if(condition: '{data.layout} == 2', then: 'myclass-2')}">

Dieser Code ersetzt das standardmäßig vorhandene

<div id="c{data.uid}">

und zwar im Verzeichnis „Templates“. Hier muss man sich die entsprechende html-Datei heraussuchen(z.B. Textmedia.html), für die man das Layout zur Verfügung stellen möchte (also am besten alle).
Link

Zeilenumbrüche in Überschriften

Und, ebenfalls zum Thema passend, das gute alte htmlSpecialChars = 0, das Zeilenumbrüche in Überschriften ermöglichte durch simples Setzen eines <br> ist in Fluidzeiten auch obsolet. Statt dessen mancht man es so (in diesem Beispiel nur für eine <h2>):

<h2><f:format.raw><f:link.typolink parameter="{link}">{header}</f:link.typolink></f:format.raw></h2>

und zwar wiederum in der Vorlagedatei direkt, in diesem Fall in der Datei Partials/Header/Header.html.
Link