Direkt zu den Inhalten springen

TypoScript

Der Kern: Static Template Enable Distribution

Um Threeme zu aktivieren, muss das Static Template Threeme - Enable Distribution an der gewünschten Stelle im Seitenbaum inkludiert werden. Auf der Seite PID=1 "Website" ist dies bereits geschehen.

Anmerkung: Threeme kann zwar mehrere Websites innerhalb einer TYPO3 Installation verwalten, eine echte programmiertechnische Abgrenzung ist zur Zeit (Version 3.0.x) aber noch nicht implementiert. Es besteht dennoch die Möglichkeit durch ein geschicktes Erweitern der Grundstruktur, der Erstellung weiterer Static Templates oder einfach durch Kopie der Extension Abhilfe zu schaffen. Wer Fragen dazu hat, kann mich gerne direkt kontaktieren.

Das Static Template bindet die constants.txt und setup.txt unter /Configuration/TypoScript/Frontend ein und über diese sämtliche TypoScript-Dateien mit den Endungen .ts und .txt der Unterverzeichnisse Lib, Menu und Page.

Die Gliederung der Verzeichnisse und Dateien orientiert sich dabei an die grundsätzlichen Struktur von TypoScript und dessen Objekthierarchie (Abb.2). So finden sich die wesentlichen Bestandteile und Top-Level-Objects im Verzeichnis Page, verschiedene Menüelemente unter Menu und die notwendigen TypoScript-Libraries in Lib.

Einige der TypoScript-Libs wie lib.threemeDynamicContent oder lib.parseFunc sind für die Funktion von TYPO3 und Threeme essenziell, andere wiederum haben einen begleitenden oder optionalen Charakter wie lib.threemeResponsiveImage zur Nutzung responsiver Bilder.

Eine besondere Datei: constants.txt

Threeme versucht den Einsatz von reinem TypoScript möglichst zu reduzieren und setzt stark auf Lösungen auf Fluid-Basis. Gänzlich ohne TypoScript geht es aber auch in Fluid nicht oder ist zumindest hier und da umständlicher.
An dieser Stelle setzt die constants.txt an, die ein umfangreiches Konstanten-Setup anbietet. Über dieses Set ist es möglich in nur einer Datei verschiedene Optionen und Möglichkeiten von Threeme zu konfigurieren. Über einen ViewHelper ist zudem die Verwendung der Konstanten direkt in Fluid möglich.

Die Konstanten sind in Kategorien (enable, meta, framework, frontend und menu) unterteilt und können je nach Bedarf erweitert werden.


Die Option: Static Template 3rd-Party Extensions

Optional kann das Static Template Threeme - Enable 3rd-Party Extensions ausgewählt werden, welches die Einbindung und Organisation von Drittanbieter-Extensions in die Hände von Threeme legt.

Ist dieses Template aktiviert, werden constants.txt und setup.txt aus Configuration/TypoScript/Extensions eingebunden. Innerhalb dieser beiden Basis-Templates wird nun wiederum per <include_typoscript> das notwendige TypoScript der Erweiterung eingebunden (Abb.3). Entweder kopierst du das Original-TypoScript aus deiner Erweiterung oder inkludierst in dem Threeme-TypoScript das Original.

Der Sinn hinter dieser Vorgehensweise ist der, dass sämtliches TypoScript zentral an einer Stelle der Programmierung liegt und du siehst, was in der Installation überhaupt eingebunden ist und schnell daran (versionierte) Änderungen vornehmen kannst.

Wie gehe ich vor?

Empfehlenswert ist es, das Static Template deiner neuen Extension im Threeme-TypoScript zuerst komplett zu inkludieren und dann die gewünschten Änderungen vorzunehmen. Die constants.txt der mitgelieferten Powermail-Konfiguration sieht beispielsweise wie folgt aus: 

 

# #################################################
# Version note:
# Copied TS and Fluid from EXT:powermail 3.7.0
# #################################################

# Include static from extenstion
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:powermail/Configuration/TypoScript/Main/constants.txt">

# Don't include static "BootstrapClassesAndLayout", use Bootstrap from Threeme instead.
# See section "styles.framework" at the end of this file for bootstrap setup.

#<INCLUDE_TYPOSCRIPT: source="FILE:EXT:powermail/Configuration/TypoScript/BootstrapClassesAndLayout/constants.txt">

plugin.tx_powermail {
   view {
       # cat=powermail_main/file; type=string; label= Path to template root (FE)
       templateRootPath = {$threeme.enable.privateBasePath}/Fluid/Extensions/Powermail/Templates/

Wer kommt zuerst: TS-Einbindung

Leider hat dieses Konzept einen vermeidbaren Harken, denn Extensions die ihr TypoScript per ext_template_setup.txt einbinden, stehen – wenn nicht anders definiert – in der Reihenfolge der TypoScript-Einbindung nach Threeme mit seinem statischen Templates.

Dies führt dazu, dass das Threeme FE-Login VOR der Extension-Konfiguration eingebunden und somit nicht zum Tragen kommt. TYPO3 bietet für diesen Umstand eine einfache Lösung, indem die Ladereihenfolge der TS-Templates festgelegt werden kann (Abb.4).