
Content Elements
- Gallery -- Responsive image galleries with lightbox (Swiper-powered via Vue)
- Stage -- Hero sections with image/video backgrounds
- Banner -- Customizable banner sections
- Single Teaser -- Content teasers with images and links
- Accordion -- Collapsible content sections (b13/container)
- Tabs -- Tabbed content panels (b13/container)
- Slider -- Swiper-powered carousels (b13/container)
- Grid -- Flexible column layouts (b13/container)
- Container -- Generic content wrapper (b13/container)
- TodoList -- Vue.js 3 interactive todo with localStorage
- Menu Subpages -- Enhanced subpage menus
- Definition List -- Structured definition lists (Content Block)
Site Sets
mpc/mp-core(aggregator) -- Pulls in all feature sets below; include this one inconfig/sites/*/config.yamlfor a full stackmpc/mp-core-base(required foundation) -- System extension dependencies (typo3/form,typo3/indexed-search, …) and shared Site Settings definitions (YAML files live underConfiguration/Sets/mp-core-base/)mpc/mp-core-container-- Container element configurationmpc/mp-core-news-- News extension integration (georgringer/news)mpc/mp-core-form-- Form framework configurationmpc/mp-core-page-- Page TypoScript, constants and Page TSconfig without SEO output (depends on base, news, form, container); use it instead ofmpc/mp-corewhen another SEO extension such asmpc/mpc-seohandles SEOmpc/mp-core-seo-- SEO: meta tags, title separator, robots and verification meta, Open Graph, Twitter Cards, Schema.org JSON-LD, sitemap (depends onmpc/mp-core-page)
Custom feature sets must depend on mpc/mp-core-base (or mpc/mp-core-page), not on mpc/mp-core — otherwise TYPO3’s SetRegistry can deadlock (aggregator → child → aggregator → …). See Configuration/Sets/mp-core/config.yaml.
Optional extension dependencies (mpc/mp-core-base)
Activated automatically when the extension is installed:
| Set / extension | Purpose |
|---|---|
georgringer/news-recordlinks | News record links |
georgringer/news-sitemap | News sitemap |
mpc/mpc-vidply | VidPly video player integration |
mpc/mpc-rss | RSS feed integration |
Frontend Stack
- Vite 8, Bootstrap 5.3, Vue.js 3.5, Sass 1.99, PostCSS, ESLint 10, Stylelint 17, Swiper 12, Jarallax 3
- ITCSS-based SCSS architecture with light/dark themes
- Code splitting, tree shaking, lazy loading, WOFF2 font subsetting
PHP Classes
DataProcessors
- HeaderLogoProcessor -- Resolves per-language and site-level logo settings (
logoBig,logoSmall,logoSvg,logoText,logoTextHidden,websiteTitle) once per page render forHeader.Logo.html/Header.Background.html - StructuredDataProcessor -- Builds a Schema.org JSON-LD
@graph(WebSite, WebPage/BlogPosting, BreadcrumbList, MusicGroup) with safejson_encodeoutput - SocialMediaProcessor -- Extracts social media URLs from site configuration for
sameAsarrays and template rendering
Event listeners
- CompressHtmlWhitespaceOnCacheableContentListener -- Minifies HTML on
AfterCacheableContentIsGeneratedEventbefore the page cache row is written. Preserves<pre>,<textarea>,<script>,<style>,<svg>, and HTML comments. Always on; no Site Setting toggle.
ViewHelpers
- SvgInlineViewHelper (
mpc:svgInline) -- Inline SVG rendering with DOM sanitization (removes<script>/<foreignObject>/<iframe>/<embed>/<object>, stripson*event handlers, neutralizesjavascript:/vbscript:/data:URIs inhref/xlink:href/src, and restricts<use>/<image>to same-document fragment refs), attribute merging, and per-request caching - Format\CssSanitizeViewHelper (
mpc:format.cssSanitize) -- Sanitizes CSS strings to prevent style-tag breakout and dangerous constructs - Format\CssColorViewHelper (
mpc:format.cssColor) -- Emits a CSS colour value verbatim only if it passesService\CssColorValidator, otherwise emits an empty string; defends inline<style>blocks from site-configuration colour-value injection - Format\Json\DecodeViewHelper (
mpc:format.json.decode) -- JSON decoding in Fluid templates - Schema\NewsArticleJsonLdViewHelper (
mpc:schema.newsArticleJsonLd) -- Emits NewsArticle JSON-LD for EXT:news detail views
Backend / UserFunc
- ColorPickerValueItems -- Dynamic color picker
itemsProcFuncreadingcolor-*keys from site configuration - FilesControlContainer -- Enhanced file field container forwarding
fieldInformationconfig - CustomContentPreviewRenderer -- Backend preview renderer with TYPO3 v14 TypeError fallback handling; implements
LoggerAwareInterfaceso masked core regressions are logged atwarninglevel
Exceptions
- FileException -- Domain exception for SVG/file operations with context array
Vue Components
- TodoList -- Interactive todo list with localStorage persistence
- GallerySwiper -- Swiper-based gallery carousel for the gallery content element
- SwiperSlider -- Generic Swiper slider component for container slider elements
Extension Integrations
- fluid_styled_content -- Bootstrap 5 styled content rendering
- EXT:news -- List/detail views, categories, pagination
- EXT:form -- Bootstrap forms, YAML configuration
- EXT:indexed_search -- Bootstrap search results
- EXT:seo -- Open Graph, Twitter Cards, Schema.org, XML sitemap
Accessibility
- Keyboard navigation, screen reader announcements, ARIA labels/roles
- Skip links, focus management, high contrast mode (forced-colors)
Documentation
- Frontend -- Build system, JS/SCSS architecture
- Configuration -- Site Sets, TypoScript, TCA, Site Settings
- Backend -- RTE, TSconfig, previews, Content Blocks
- Content elements -- Gallery, stage, banner, containers, field reference
- Favicons -- Favicon assets,
Favicons.html, web manifest