aemka
Web-Entwicklung, Design, TYPO3, Magento

Handy: +491724058115
Büro: +494104960039

info@aemka.de
www.aemka.de

Fluid Content Inhaltselemente ohne EXT:fluidcontent

Wir sind große Fans der TYPO3 Templating Engine Fluid. Zusammen mit den Erweiterungen EXT:flux und EXT:fluidcontent kann man damit sehr schnell flexible Inhaltselemente für seine Redakteure schaffen, die genau auf die individuellen Anwendungsfälle zugeschnitten sind. Aus Entwicklersicht lässt sich hierbei besonders bequem arbeiten, da man nur eine einzige Technologie benötigt, nämlich Fluid Markup. Des Weiteren sind keine php Klassen, TCA Konfiguration, Typoscript, Page TSconfig oder SQL Definitionen notwendig. Ein weiterer Vorteil ist, dass man pro Element nur 1 Datei mit dem Fluid Markup benötigt und keine Datenbankeinträge im CMS. Damit sind Inhaltselemente auf Basis von EXT:flux und EXT:fluidcontent sehr portabel und gut zu versionieren und deployen. Mehr zu der Technologie findet sich unter https://fluidtypo3.org/documentation/templating-manual/templating/creating-templates/content-element.html.

Nun wurde in Version 8.0.0 von EXT:flux angekündigt, dass man das Ganze auch ohne EXT:fluidcontent errreichen kann. Wir stellen hier einmal zusammen, wie man ein vorhandenes Projekt von EXT.fluidcontent befreit und nur mit EXT:flux seine Inhaltselemente bereit stellt. Dabei gehen wir in folgenden Codebeispielen davon aus, dass alle Elemente in einer Provider oder Sitepackage Extension "EXT:template" mit dem Vendor Namen AEMKA gebundelt werden. Wie bei jedem systemtechnischen Eingriff empfehlen wir ein Backup von Dateisystem und Datenbank der TYPO3 Installation vorab. Getestet wurde es mit Version 8.2.1 von EXT:flux und TYPO3 CMS 8.7.13.

Schritt 1 - Entfernen von EXT:fluidcontent:

Dazu ggf. die Abhängigkeit auf EXT:fluidcontent in EXT:template/ext_emconf.php in $EM_CONF[$_EXTKEY]['constraints']['depends'] entfernen. Danach kann EXT:fluidcontent im TYPO3 Extension Manager deinstalliert und bei Bedarf direkt gelöscht werden.

Schritt 2 - Hinzufügen der manuellen Element Registrierungen:

Für jedes Inhaltselement in EXT:template/Resources/Private/Templates/Content/ muss noch eine Zeile Code in der EXT:template/ext_localconf.php angelegt werden. Dies wird aber vermutlich später auch noch unnötig und komplett automatisiert, in der neusten Github master Version von EXT:flux ist es zumindest derzeit schon so:

 

\FluidTYPO3\Flux\Core::registerTemplateAsContentType(
 'AEMKA.Template', 
 'EXT:template/Resources/Private/Templates/Content/SomeElement.html'
);
\FluidTYPO3\Flux\Core::registerTemplateAsContentType(
 'AEMKA.Template', 
 'EXT:template/Resources/Private/Templates/Content/AnotherElement.html'
);
...

 

Schritt 3 - Umschreiben der Datenbank auf die neue Art der Element Registrierung:

Für jedes Inhaltselement, das man bereits mit EXT:fluidcontent angelegt hat und migrieren möchte, muss man einen SQL Befehl in folgender Art ausführen:

 

UPDATE tt_content SET CType = "template_someelement" 
 WHERE tx_fed_fcefile = "AEMKA.Template:SomeElement.html" AND CType = "fluidcontent_content";
UPDATE tt_content SET CType = "template_anotherelement" 
 WHERE tx_fed_fcefile = "AEMKA.Template:AnotherElement.html" AND CType = "fluidcontent_content";
...

 

Schritt 4 - Optionale Dinge:

Im TYPO3 Install Tool können unter "Important actions" > "Compare current database with specification" die jetzt unnötigen Datenbankspalten entfernt werden.
Pro Element kann nun verlässlich ein Icon vergeben werden mit dem Markup:

 

<flux:form.option.icon 
 value="EXT:template/Resources/Public/Icons/Content/Icon.svg" />

 

innerhalb des flux:form Tags.

In der Version 8 von Flux erhielten wir im Frontend die Meldung, dass die Flux Inhaltselemente nicht gerendert werden konnten. Mit den folgenden Zeilen in der ext_localconf.php konnten wir hier Abhilfe schaffen. Ob das ein generelles Problem war und ob das in Version 9 von Flux immer noch nötig sein wird, können wir aktuell nicht sagen:

 

if (TYPO3_MODE == 'FE') {
 $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tstemplate.php']['includeStaticTypoScriptSources'][] = \FluidTYPO3\Flux\Backend\TableConfigurationPostProcessor::class . '->processData';
}

 

Fazit

Man kann sich eine Extension im System sparen. Zusätzlich wurde die Entwicklung an EXT:fluidcontent auch eingestellt und soll nicht mehr für TYPO3 CMS 9 verfügbar sein, womit es auch ein weiterer vorbereitender Schritt für das Update auf die kommende LTS Version von TYPO3 CMS ist.

Mit der Umstellung sind auch einige kleine Bugs Geschichte, z.B. die Probleme mit verschwindenden Icons der Elemente. Außerdem hat jedes Inhaltselement nun einen eigenen Inhaltselementtyp (CType), so dass man in Redakteursrechten nun explizit definieren, dass Redakteure nur auf bestimmte Elemente Zugriff haben genau wie, dass in Container Elementen nur bestimmte Inhaltselemente erlaubt sind.

Wenn Sie technischen Support, Schulung oder andere TYPO3 Leistungen benötigen, sprechen Sie uns gerne an.