Skip to main navigation Skip to main content Skip to page footer

TypoScript Objekte

Relevante TypoScript Befehle

In modernen TYPO3-Versionen (seit v10+) wurde das meiste aus dem TypoScript-Bereich "config" in die Site-Configuration (yaml) ausgelagert (z.B. Domains, Sprachen, Error-Handling). Einige Einstellungen sind jedoch in TypoScript verblieben:

config { 
# Deaktiviert den Cache für die gesamte Seite (nur für lokale Entwicklung!)
no_cache = 1 # Frontend-Fehlermeldungen im Browser ausgeben (statt "Oops, an error occurred")
# Darf auf Live-Systemen niemals auf 0 stehen!
contentObjectExceptionHandler = 0
# Links ohne Base-URL generieren, stattdessen relativer Root-Pfad
absRefPrefix = /
# Entfernt Standard-CSS und JS von TYPO3-Erweiterungen (für volle Kontrolle)
removeDefaultCss = 1 removeDefaultJS = 1
}

Das PAGE-Objekt (meist page = PAGE) definiert die HTML-Ausgabe. In TYPO3 v14 wird FLUIDTEMPLATE zunehmend durch das vereinfachte PAGEVIEW-Objekt abgelöst.

page = PAGE 
# TYPO3 v14 Standard: Das PAGEVIEW Objekt
page.10 = PAGEVIEW
page.10 {
paths {
# TYPO3 sucht hier in den Unterordnern Layouts/, Partials/ und Pages/
100 = EXT:my_sitepackage/Resources/Private/PageView/
}
}
# Meta-Tags setzen page.meta { 
viewport = width=device-width, initial-scale=1, shrink-to-fit=no
author = Max Mustermann

}
# CSS und JavaScript einbinden
page.includeCSS {
main = EXT:my_sitepackage/Resources/Public/Css/style.css
}
page.includeJSFooter {
main = EXT:my_sitepackage/Resources/Public/JavaScript/main.js
}

Das CONTENT-Objekt holt Datensätze (meist aus tt_content) aus der Datenbank und rendert sie. Es wird
häufig in eine Bibliothek (lib.*) ausgelagert, um es in Fluid mit <f:cObject> aufzurufen.

lib.dynamicContent = CONTENT
lib.dynamicContent {
table = tt_content
select {
# Die colPos (Spalte) wird per Daten-Übergabe aus Fluid empfangen
where = {#colPos}={field:colPos}
where.insertData = 1
# Elementare Sortierung, wie sie der Redakteur im Backend definiert hat
orderBy = sorting
# Nur Inhalte der aktuell aufgerufenen Seite laden
pidInList.data = TSFE:id
}
}

WICHTIG: Das klassische HMENU (inklusive TMENU, GMENU etc.) wurde in TYPO3 v13 vollständig aus dem Core entfernt! Es funktioniert in TYPO3 v14 nicht mehr. Zur historischen Einordnung (z.B. beim Lesen alter Tutorials) sah es so aus:

# DIESER CODE FUNKTIONIERT IN TYPO3 v14 NICHT MEHR!
lib.mainMenu = HMENU
lib.mainMenu {
1 = TMENU
1 {
wrap = <ul>|</ul>
NO = 1
NO.wrapItemAndSub = <li>|</li>
ACT = 1
ACT.wrapItemAndSub = <li class="active">|</li>
}
}

In modernen TYPO3-Versionen baut TypoScript das HTML nicht mehr selbst zusammen. Stattdessen bereitet der "MenuProcessor" die Menü-Daten (als Array) auf und übergibt sie an Fluid. Fluid übernimmt das HTML-Rendering.

page.10 = PAGEVIEW
page.10 {
dataProcessing {
# Hauptnavigation (Level 1 und 2)
10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
10 {
levels = 2
expandAll = 1
includeSpacer = 1
# Der Name der Variable, die in Fluid zur Verfügung steht:
as = mainnavigation
}
# Footernavigation (z.B. aus einer bestimmten Seite mit ID 42)
20 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
20 {
special = directory
special.value = 42
as = footernavigation
}
}
}

Zugehörige Ausgabe im Fluid-Template (z.B. in Partials/Header.html):

<ul class="nav">
<f:for each="{mainnavigation}" as="item">
<li class="nav-item {f:if(condition: item.active, then: 'active')}">
<a href="{item.link}" class="nav-link">{item.title}</a>
<!-- Submenü -->
<f:if condition="{item.children}">
<ul class="subnav">
<f:for each="{item.children}" as="subItem">
<li><a href="{subItem.link}">{subItem.title}</a></li>
</f:for>
</ul>
</f:if>
</li>
</f:for>
</ul>