Zum Inhalt springen

Konfiguration

Referenz zur Konfiguration von Site Sets, Site Settings, TypoScript und TCA.

MP-Core Logo

Site Sets (TYPO3 13.4+)

SetZweck
mpc/mp-core (Aggregator)Ruft alle unten aufgeführten Funktionssätze in einem Include ab
mpc/mp-core-base (erforderlich)Kernfunktionalität, Vorlagen, Basis-Styling, gemeinsame Einstellungen
mpc/mp-core-containerContainer-Elemente (Akkordeon, Registerkarten, Schieberegler, Raster)
mpc/mp-core-newsIntegration der News-Erweiterung
mpc/mp-core-formKonfiguration des Formular-Frameworks
mpc/mp-core-seoSEO (Open Graph, Twitter Cards, Schema.org, Sitemap)

mpc/mp-core ist ein Aggregator, der auf mpc/mp-core-base sowie allen Funktionsumfängen. Es reicht aus, mpc/mp-core in Ihre Website einzubinden. Wenn Sie eine feinere Steuerung benötigen, fügen Sie mpc/mp-core-base und wählen Sie einzelne Funktionssätze aus.

Rollen festlegen

Rolle festlegenRolle
mpc/mp-coreAggregator + gemeinsame Website-Einstellungen (settings.yaml, settings.definitions.yaml in diesem Ordner)
mpc/mp-core-baseLädt TYPO3-Systemerweiterungen; registriert die oben genannten Pfade für gemeinsame Einstellungen; optionale Integrationen, sofern vorhanden
mpc/mp-core-* (Feature)Feature-spezifisches TypoScript und Einstellungen; jedes hängt von mpc/mp-core-base nur
 

Wichtig: Wenn Sie ein benutzerdefiniertes Site-Set erstellen, setzen Sie dependencies: [mpc/mp-core-base, …] — niemals mpc/mp-core. Das Abhängigmachen vom Aggregator eines untergeordneten Sets führt zu einem SetRegistry-Rekursions-Deadlock.

 

mpc/mp-core-base Abhängigkeiten

Erforderlich: typo3/form, typo3/redirects, typo3/indexed-search

Optional (wird bei Installation verwendet): georgringer/news-recordlinks, georgringer/news-sitemap, mpc/mpc-vidply, mpc/mpc-rss

Sets aktivieren

Backend: Site-Verwaltung -> Sites -> Registerkarte „Sets“ -> Sets aktivieren und anordnen.

YAML (config/sites/[site]/config.yaml):

 
base: 'https://example.com'
rootPageId: 1
dependencies:
  - mpc/mp-core
 

Oder einzelne Sets auswählen:

 
dependencies:
  - mpc/mp-core-base
  - mpc/mp-core-container
  - mpc/mp-core-seo
 

Website-Einstellungen

Bearbeitbar über Site-Verwaltung → Sites → Einstellungen oder config/sites/[site]/settings.yaml.

Nach Änderung neu generieren settings.definitions.yaml / settings.yaml:

 
node Documentation/scripts/sync-site-settings.mjs
 

Kern (gemeinsam genutzt — mpc/mp-core / registriert über mpc/mp-core-base)

Definitionen und Standardeinstellungen der Website-Einstellungen befinden sich in Configuration/Sets/mp-core/settings.definitions.yaml und settings.yaml. Das Basisset verweist lediglich auf diese Dateien.

Quelle: Configuration/Sets/mp-core/

Schema-Standarddefault in settings.definitions.yaml (Benutzeroberfläche „Websiteeinstellungen“). Ausgelieferter Standardwert – Wert aus settings.yaml , wenn es das Schema überschreibt (Spalte = wie im Schema).

PIDs

SchlüsselTypStandard
PIDs.pidSearchint0
PIDs.pidHomeint1
PIDs.pidMetaNavTopint66
PIDs.pidMetaNavFooterint25
PIDs.pidMainNavMetaint25
PIDs.pidCategoriesint251
PIDs.pidLogosBannerTopint391
PIDs.pidSupplementint24

Flüssige Wurzelpfade

SchlüsselTypStandard
templates.layoutRootPathZeichenketteEXT:mp_core/Resources/Private/Layouts/
templates.partialRootPathZeichenketteEXT:mp_core/Resources/Private/Partials/
templates.templateRootPathZeichenketteEXT:mp_core/Resources/Private/Templates/

Inhalt

SchlüsselTypSchema-StandardAuslieferungsstandard
content.textmedia.maxWidthint12001920
content.textmedia.maxWidthInTextint6001920
content.lightbox.enabledbooltrue
content.lightbox.cssClassZeichenkettelightbox
content.defaultHeaderTypeint2
content.links.extTargetZeichenkette_blank

Konfiguration

SchlüsselTypStandard
config.admPanelboolfalse
config.debugboolfalse
config.noCacheboolfalse
config.removeDefaultJSZeichenketteexternal
config.spamProtectEmailAddressesbooltrue
config.spamProtectEmailAddresses_atSubstZeichenkette[at]
config.absRefPrefixZeichenketteauto
config.headerCommentZeichenkette(leer)

Leistung

SchlüsselTypStandard
performance.compressJsboolfalse
performance.compressCssboolfalse
performance.concatenateJsboolfalse
performance.concatenateCssboolfalse
performance.enableLazyLoadingbooltrue

Design

SchlüsselTypStandard
design.colors.primaryZeichenkette#0066cc
design.colors.secondaryZeichenkette#ff6600
design.fonts.primaryZeichenketteOpen Sans, sans-serif
design.fonts.headingZeichenketteTurret Road, sans-serif
design.breakpoints.mobileint768
design.breakpoints.tabletint1024
design.breakpoints.desktopint1440
design.container.maxWidthZeichenkette1200px

Navigation

SchlüsselTypStandard
navigation.maxDepthint3
navigation.showHiddenPagesboolfalse
navigation.enableBreadcrumbbooltrue
navigation.breadcrumb.includeHomebooltrue

Meta

SchlüsselTypStandard
meta.viewportZeichenkettewidth=device-width, initial-scale=1
meta.robotsZeichenketteindex,follow
meta.appleMobileWebAppCapableZeichenketteno
meta.compatibleZeichenketteIE=edge
meta.googleZeichenkettenotranslate
meta.googleSiteVerificationZeichenkette(leer)

Vorlagen & Pfade

SchlüsselTypStandard
basePathZeichenketteEXT:mp_core
pageTemplatesZeichenketteEXT:mp_core/Resources/Private/Templates/Page/
pagePartialsZeichenketteEXT:mp_core/Resources/Private/Partials/Page/
pageLayoutsZeichenketteEXT:mp_core/Resources/Private/Layouts/Page/
pageFaviconsFileZeichenketteEXT:mp_core/Resources/Private/Partials/Page/Favicons.html
contentElementTemplatesZeichenketteEXT:mp_core/Resources/Extensions/fluid_styled_content/Private/Templates/
contentElementPartialsZeichenketteEXT:mp_core/Resources/Extensions/fluid_styled_content/Private/Partials/
contentElementLayoutsZeichenketteEXT:mp_core/Resources/Extensions/fluid_styled_content/Private/Layouts/
containerElementTemplatesZeichenketteEXT:mp_core/Resources/Private/Templates/Container/
containerElementPartialsZeichenketteEXT:mp_core/Resources/Private/Partials/Container/
containerElementLayoutsZeichenketteEXT:mp_core/Resources/Private/Layouts/Container/
pluginsNewsTemplatesZeichenketteEXT:mp_core/Resources/Extensions/news/Templates/
pluginsNewsPartialsZeichenketteEXT:mp_core/Resources/Extensions/news/Partials/
pluginsNewsLayoutsZeichenketteEXT:mp_core/Resources/Extensions/news/Layouts/
pluginsIndexedSearchTemplatesZeichenketteEXT:mp_core/Resources/Extensions/indexed_search/Templates/
pluginsIndexedSearchPartialsZeichenketteEXT:mp_core/Resources/Extensions/indexed_search/Partials/
pluginsIndexedSearchLayoutsZeichenketteEXT:mp_core/Resources/Extensions/indexed_search/Layouts/
contentTypesTemplatesZeichenketteEXT:mp_core/Resources/Private/Templates/Content/
contentTypesGalleryTemplatesZeichenketteEXT:mp_core/Resources/Private/Templates/Content/
resourcesPrivateZeichenketteEXT:mp_core/Resources/Private
resourcesExtensionsZeichenketteEXT:mp_core/Resources/Extensions
structuredDataEnabledbooltrue
musicGroupEnabledboolfalse
musicGroupNameZeichenkettePellerhead
musicGroupGenreZeichenketteRock, Punk, Electronic
musicGroupDescriptionZeichenkette(leer)
musicGroupImageZeichenkette(leer)

Container (mpc/mp-core-container)

Quelle: Configuration/Sets/mp-core-container/

SchlüsselTypStandard
container.grid.enabledbooltrue
container.grid.defaultColumnsint2
container.grid.maxColumnsint4
container.grid.gutterSizeZeichenkette20px
container.accordion.enabledbooltrue
container.accordion.allowMultipleboolfalse
container.accordion.firstOpenbooltrue
container.tabs.enabledbooltrue
container.tabs.positionZeichenkettetop
container.wrapper.maxWidthZeichenkette1200px
container.wrapper.paddingZeichenkette15px

Nachrichten (mpc/mp-core-news)

Quelle: Configuration/Sets/mp-core-news/

SchlüsselTypStandard
news.list.paginate.itemsPerPageint10
news.list.orderByZeichenkettedatetime
news.list.orderDirectionZeichenkettedesc
news.list.dateFormatZeichenketted.m.Y
news.list.showCategoriesbooltrue
news.list.showTagsbooltrue
news.detail.showBackLinkbooltrue
news.detail.showRelatedbooltrue
news.detail.relatedLimitint3
news.detail.enableCommentsboolfalse
news.media.maxWidthint1200
news.media.maxHeightint800

Formular (mpc/mp-core-form)

Quelle: Configuration/Sets/mp-core-form/

SchlüsselTypStandard
form.honeypot.enabledbooltrue
form.confirmationPage.enabledbooltrue
form.requiredFieldMarkerZeichenkette*
form.email.senderNameZeichenketteWebsite Contact Form
form.email.senderEmailZeichenkettenoreply@example.com
form.email.replyToEmailZeichenketteinfo@example.com
form.validation.clientSidebooltrue
form.validation.showInlineErrorsbooltrue
form.storage.saveToDatabaseboolfalse
form.storage.uploadFolderZeichenkette1:/forms/

SEO (mpc/mp-core-seo)

Quelle: Configuration/Sets/mp-core-seo/

SchlüsselTypStandard
seo.meta.defaultDescriptionZeichenkette(leer)
seo.meta.generateDescriptionsbooltrue
seo.meta.maxDescriptionLengthint160
seo.meta.maxTitleLengthint60
seo.meta.titleSeparatorZeichenkette|
seo.openGraph.enabledbooltrue
seo.openGraph.defaultImageZeichenkette(leer)
seo.openGraph.imageWidthint1200
seo.openGraph.imageHeightint630
seo.twitter.enabledbooltrue
seo.twitter.cardTypeZeichenkettesummary_large_image
seo.twitter.siteZeichenkette(leer)
seo.sitemap.enabledbooltrue
seo.sitemap.excludeHiddenPagesbooltrue
seo.sitemap.priorityZeichenkette0.5
seo.canonical.enabledbooltrue
seo.schema.enabledbooltrue
seo.schema.organizationTypeZeichenketteOrganization

Verwendung von Einstellungen in TypoScript

 
# Constants
mpCore.design.primaryColor = {$settings.design.colors.primary}

# Setup
page.10.templateRootPaths.10 = {$settings.pageTemplates}
 
 

Site-Konfiguration (config.yaml)

Über die Site-Einstellungen hinaus erweitert mp-core den Site-Datensatz und die Site-Sprache über Configuration/SiteConfiguration/Overrides/sites.php. Konfigurieren Sie diese unter Site-Verwaltung → Sites → [site] → Konfiguration (oder in config/sites/[site]/config.yaml).

Bereich(Beispiele)Hinweise
AnpassungnavType, subnav, subnavOrder, search, copyrightTextnavType: 1 primär, 2 sekundär, 3 tertiär
Faviconsfavicon-96x96-png, faviconIco, faviconSvg, apple-touch-icon, webmanifest, …Dateiverknüpfungen → Resources/Private/Partials/Page/Favicons.html (Favicons.md)
Farben & Stilecolor-toggle, color-1color-8, color-primary, stylesstyles fügt benutzerdefiniertes :root CSS ein; lässt sich mit ColorPickerValueItems in TCA
Social MediasocialMediaSwitch, Plattform-URL-FelderEingebunden in SocialMediaProcessor / strukturierte Daten
LogoslogoBig, logoSmall, logoSvg, logoText, logoTextHiddenSprachbezogene Überschreibungen für die Sprachen der Website; aufgelöst durch HeaderLogoProcessor

Sprachspezifische Paletten: copyrightText, Logo-Felder und logoText / logoTextHidden können je nach Website-Sprache variieren.

TypoScript-Struktur

 
Configuration/
├── RequestMiddlewares.php          # HtmlWhitespaceCompressorMiddleware
├── Services.yaml
├── Sets/
│   ├── mp-core/
│   │   ├── config.yaml               # Aggregator (depends on all feature sets)
│   │   ├── settings.yaml             # Shared Site Settings defaults
│   │   ├── settings.definitions.yaml # Shared Site Settings schema
│   │   ├── constants.typoscript, setup.typoscript, page.tsconfig
│   ├── mp-core-base/
│   │   └── config.yaml               # System deps + pointers to mp-core settings
│   ├── mp-core-container/
│   │   ├── config.yaml, settings.yaml, settings.definitions.yaml
│   │   ├── constants.typoscript, setup.typoscript
│   ├── mp-core-news/
│   │   ├── config.yaml, settings.yaml, settings.definitions.yaml
│   │   ├── constants.typoscript, setup.typoscript
│   ├── mp-core-form/
│   │   ├── config.yaml, settings.yaml, settings.definitions.yaml
│   │   ├── constants.typoscript, setup.typoscript
│   └── mp-core-seo/
│       ├── config.yaml, settings.yaml, settings.definitions.yaml
│       ├── constants.typoscript, setup.typoscript
├── TypoScript/
│   ├── constants.typoscript, setup.typoscript
│   ├── VueComponents.typoscript
│   ├── Helper/PageClass.typoscript
│   ├── Constants/*.typoscript
│   └── Setup/
│       ├── 10.Config, 20.Page, 30.Page.Styles, 40.Page.Scripts
│       ├── 50.Page.Navigation, 60.Lib, 90.CleanupRTE
│       ├── Page/*.typoscript
│       └── ContentElements/tt_content/*.typoscript
└── Extensions/
    ├── constants.typoscript, setup.typoscript
DateiZweck
10.ConfigGrundlegende TYPO3-Konfiguration (Zeichensatz, Sprache, Cache)
20.PageSeitenobjekt, Vorlagenpfade, Datenprozessoren
30.Page.StylesCSS-Includes
40.Page.ScriptsJavaScript-Einbindungen
50.Page.NavigationBündel für bedingte Navigation
60.LibGemeinsam genutzte lib.* Objekte
95.SitePresentationOverridesSocialMediaProcessor, StructuredDataProcessor
ContentElements/tt_content/*Rendering von Inhaltselementen, HeaderLogoProcessor

Konfiguration des Vorlagenpfads

 
page.10 = FLUIDTEMPLATE
page.10 {
  templateRootPaths {
    0 = EXT:mp_core/Resources/Private/Templates/Page/
    10 = {$settings.pageTemplates}
  }
  partialRootPaths {
    0 = EXT:mp_core/Resources/Private/Partials/
    10 = {$settings.pagePartials}
  }
  layoutRootPaths {
    0 = EXT:mp_core/Resources/Private/Layouts/
    10 = {$settings.pageLayouts}
  }
}
 

Pfadpriorität: 0 = Kern, 10 = Erweiterung, 20+ = Projekt. Höhere Zahlen haben Vorrang vor niedrigeren.

Erweiterungsüberschreibungen

 
plugin.tx_news.view.templateRootPaths.10 = EXT:mp_core/Resources/Extensions/news/Templates/
plugin.tx_form.view.templateRootPaths.10 = EXT:mp_core/Resources/Extensions/form/Templates/
plugin.tx_indexedsearch.view.templateRootPaths.10 = EXT:mp_core/Resources/Extensions/indexed_search/Templates/
 

Bedingte Konfiguration

Navigations-Bundles hängen vom Feld „Site-Konfiguration“ ab navType (siehe Configuration/SiteConfiguration/Overrides/sites.php):

navTypeLayout
1Primäre Navigation
2Sekundäre Navigation
3Tertiäre Navigation
[traverse(site("configuration"), "navType") == "1"]
  page.includeJSFooter.navigationPrimary = EXT:mp_core/Resources/Public/JavaScripts/navigationPrimary.js
[END]
 

TCA-Überschreibungen

Schnellübersicht

DateiZweck
tt_content_00_base.phpAssistent für globale Verknüpfungen, Paletten, Vue TodoList CType
tt_content_00_header.phpErweiterte Kopfzeilenoptionen
pages.phpFunktionsschalter, Teaser-Beschreibung, Link-Symbol
sys_category.phpBeziehung zur Hauptkategorie auf Seiten
sys_file_metadata.phpRTE-Beschreibung, Barrierefreiheits-Flag
sys_file_reference.phpGliederungs- und Download-Optionen
sys_template.phpStatische TypoScript-Registrierung

Seitenfelder (pages.php)

FeldTypBeschreibung
newsletterCheckbox-SchalterAnmeldefeld für den Newsletter
socialmediaCheckbox-SchalterLeiste zum Teilen in sozialen Medien
breadcrumbCheckbox-SchalterBreadcrumb-Navigation
headercontainerSchaltfläche zum Aktivieren/DeaktivierenLayout des Header-Containers
teaser_descriptionTextfeldTeaser/Kartenbeschreibung
link_iconDatei (SVG)Benutzerdefiniertes Seiten-Link-Symbol
link_icon_backgroundSchaltfläche zum Aktivieren/DeaktivierenHintergrund des Symbols

Globaler Link-Assistent (tt_content_00_base.php)

FeldTypOptionen
tx_link_switchKontrollkästchen umschaltenLink aktivieren/deaktivieren
tx_linkLink-AssistentSeite, Datei, URL, Datensatz
tx_link_layoutAuswählenPrimäre/sekundäre/tertiäre Schaltfläche, Link-Stile
tx_link_textTexteingabeBenutzerdefinierter Linktext
tx_link_positionAuswählenMitte, Links, Rechts

Palette: link_config

Benutzerdefinierte Inhaltselemente

ElementDateiBeschreibung
Galeriett_content_gallery.phpResponsive Bildergalerien + Lightbox
Bühnett_content_stage.phpHero-Bereiche (Bild-/Videohintergründe)
Bannertt_content_banner.phpAnpassbare Bannerbereiche
Einzel-Teasertt_content_singleteaser.phpInhalts-Teaser mit Bildern/Links
Akkordeontt_content_accordion.phpZusammenklappbare Bereiche (b13/container)
Registerkartentt_content_tabs.phpRegisterkarten (b13/container)
Schiebereglertt_content_slider.phpSwiper-Karussells (b13/container)
Rastertt_content_grid.phpFlexible Spaltenlayouts (b13/container)
Containertt_content_container.phpGenerischer Wrapper (b13/container)
To-Do-Listett_content_00_base.phpVue.js 3 To-Do (CType: mpcore_todolist)
Menü-Unterseitentt_content_menu_subpages.phpErweitertes Unterseiten-Menü

Dateimetadaten / Referenzen

TabelleFeldBeschreibung
sys_file_metadatadescriptionRTE-Textbeschreibung
sys_file_metadatais_accessibleKennzeichen für Barrierefreiheit
sys_file_referenceoutlineMit Rahmen anzeigen
sys_file_referenceallow_downloadDownload-Schaltfläche anzeigen

Häufige Anpassungsmuster

Hinzufügen eines Feldes zu einem bestehenden Element

 
$myColumns = [
    'tx_my_field' => [
        'label' => 'My Field',
        'config' => ['type' => 'input', 'size' => 30],
    ],
];
ExtensionManagementUtility::addTCAcolumns('tt_content', $myColumns);
ExtensionManagementUtility::addToAllTCAtypes('tt_content', 'tx_my_field', 'textmedia', 'after:bodytext');
 

Datenbankschema

Fügen Sie Spalten hinzu ext_tables.sqlund führen Sie anschließend „Admin-Tools“ -> „Wartung“ -> „Datenbankstruktur analysieren“ aus.

 
CREATE TABLE tt_content (
    tx_my_field varchar(255) DEFAULT '' NOT NULL
);
 

Tipps

  1. Verwenden Sie vorhandene Paletten aus tt_content_00_base.php und tt_content_00_header.php
  2. Fügen Sie benutzerdefinierten Feldern das Präfix tx_ , um Konflikte zu vermeiden
  3. Verwenden Sie „LLL:EXT:...“-Referenzen für alle Beschriftungen
  4. Verwenden Sie „displayCond für die bedingte Sichtbarkeit von Feldern: 'displayCond' => 'FIELD:my_toggle:=:1'
  5. Verwenden Sie Site-Einstellungen anstelle von fest codierten TypoScript-Werten
  6. Beachten Sie die Pfadnummerierung: 0 (Kern), 10 (Erweiterung), 20+ (Projekt)

Weiterführende Literatur

Seite teilen