Configuration
TYPO3 Astryx is configured using TYPO3 Site Settings, Page properties (TCA overrides), TypoScript, and Page TSconfig.
Site Settings
Site settings are managed through the TYPO3 backend module Site Management > Settings
or by editing config/.
All settings are grouped under the category Astryx.
Available Site Settings
| Setting Key | Type | Default | Description & Usage |
|---|---|---|---|
Astryx. | string | "neutral" | Enter exactly neutral, stone, or ocean in lowercase
(for example, Astryx. in the site's
settings.). A page-level Astryx Theme selection overrides
this site default. |
Astryx. | string | "system" | The default color mode. Available values: "system",
"light", or "dark". system follows the visitor's
OS/browser preference. |
Astryx. | bool | true | Shows the light/dark mode switcher button in the header and
saves the visitor's choice in browser local storage. Set to
false to enforce the configured page or site color mode. |
Astryx. | bool | true | Shows the language selector in the header when the site has more than one enabled language in its site configuration. |
Astryx. | string | "72rem" | Maximum content container width (e.g. "72rem",
"1280px"). Constrains standard page and container grids. |
Astryx. | int | 0 | UID of the root page for the main top navigation menu.
Value 0 defaults to the current site root. |
Astryx. | int | 0 | UID of the parent page for the footer navigation menu.
Value 0 disables the footer link menu. |
Astryx. | int | 0 | UID of a page containing editorial content elements (in
col) to render as footer content. Value 0
disables editorial footer rendering. |
Astryx. | string | "" | Relative path or extension reference to the site logo image
(e.g. "EXT:). |
Astryx. | string | "Home" | Accessible alternative text for the logo link. Defaults to
"Home". |
Astryx. | string | "EXT:
Page | Path override for the PAGEVIEW template hierarchy (contains
Pages/, Layouts/, and Partials/). |
Astryx. | bool | true | When enabled, keeps the main navigation header pinned to the top of the viewport during scrolling. |
Astryx. | bool | false | When enabled, keeps the footer bar pinned to the bottom of the viewport. |
Astryx. | bool | false | When enabled, loads frontend bundles built by the consuming
project's Vite pipeline (public/_) rather
than packaged extension assets. |
Example config/sites/<site-identifier>/settings.yaml
Astryx.theme: 'stone'
Astryx.mode: 'system'
Astryx.allowUserMode: true
Astryx.showLanguageMenu: true
Astryx.contentWidth: '72rem'
Astryx.navigationRoot: 0
Astryx.footerRoot: 14
Astryx.footerContentPage: 15
Astryx.logo: 'EXT:astryx_sitepackage/Resources/Public/Images/logo.svg'
Astryx.logoAlt: 'Astryx Demo'
Astryx.pinnedHeader: true
Astryx.pinnedFooter: false
Astryx.useVite: false
Page-Level Theme and Mode Inheritance
TYPO3 Astryx extends the pages table with two fields placed directly after the
Backend Layout selector in Page Properties:
- Astryx Theme (
tx_): - Options:astryx_ theme Inherit(empty),Neutral(neutral),Stone(stone), orOcean(ocean). - Astryx Color Mode (
tx_): - Options:astryx_ mode Inherit(empty),System(system),Light(light), orDark(dark).
Inheritance Rules
- Both fields inherit independently along the rootline.
- The nearest configured ancestor page wins.
- If all ancestors are set to
Inherit, the values fall back to the site settingsAstryx.andtheme Astryx..mode - The selected theme sets the HTML root attribute
data-.astryx- theme="<theme>" - The selected mode sets
data-onastryx- mode="<mode>" <html>. - If
Astryx.is enabled, a visitor's saved browser preference overrides the page color mode in the client.allow User Mode: true
Backend Layouts
Astryx supplies three backend layouts configured in Page TSconfig
(Configuration/):
- Astryx Default (
default): - Stage (col): Top full-width hero or header area. - Main (Pos = 1 col): Main page content.Pos = 0 - Astryx Sidebar (
astryx_): - Stage (sidebar col): Top full-width stage area. - Main (Pos = 1 col): Main content area. - Detail (Pos = 0 col): Sidebar / secondary column. Stacks below Main on small viewports and displays alongside atPos = 2 60remviewport width. - Astryx App Shell (
astryx_): - Stage (app_ shell col): Stage area. - Editorial Navigation (Pos = 1 col): Left-hand navigation panel. - Main (Pos = 3 col): Central content. - Detail (Pos = 0 col): Right-hand detail panel. Displayed beside Main starting atPos = 2 90remviewport width.
Page TSconfig Settings
The Astryx Site Set automatically includes:
backend_: Registers the layout records and SVG icons.layouts. tsconfig content_: - Hides the 17 standard FSC types that lack an Astryx renderer from the new content wizard and the CType dropdown (viatypes. tsconfig TCEFORM.). - Configures new content elements to default to Astryx Text:tt_ content. CType. remove Items TCAdefaults..tt_ content. CType = astryx_ text rte.: Setstsconfig RTE..default. preset = astryx
Rich Text Editor (CKEditor) Preset
Astryx provides a dedicated CKEditor preset registered in ext_ at
EXT:.
Features:
Clean semantic markup without inline style attributes or legacy font tags.
Editor contents are scoped inside .ck- with custom styling matching frontend typography.
Scoped tokens from ``Resources/Public/Css/rte-tokens.css``.
Supports bold, italic, strikethrough, headings (H2–H4), bullet/numbered lists, links (via TYPO3 Link Browser),
tables, blockquotes, and code snippets.
Overriding Templates and Components
Overriding Page Layouts
Set Astryx. in your site settings to point to your custom site package directory:
Astryx.pageViewPath: 'EXT:my_sitepackage/Resources/Private/PageView/'
Overriding Native Fluid Components
In your site package's Configuration/, register your template
path under the Skom\ collection with a higher numeric priority:
<?php
return [
'Skom\Typo3Astryx\Components' => [
'templatePaths' => [
10 => 'EXT:typo3_astryx/Resources/Private/Components/',
20 => 'EXT:my_sitepackage/Resources/Private/Components/',
],
'templateNamePattern' => '{path}/{name}',
'additionalArgumentsAllowed' => false,
],
];
Overriding Content Block Templates
Content Block frontend and preview templates can be customized via TypoScript root paths:
lib.contentBlock {
partialRootPaths.20 = EXT:my_sitepackage/Resources/Private/Partials/
layoutRootPaths.20 = EXT:my_sitepackage/Resources/Private/Layouts/
}