Configuration
The Theme Manager can be configured through Symfony configuration under the pimcore_backend_power_tools root node.
Configuration is optional – the bundle ships the two built-in themes (Pimcore Light, Pimcore Dark) and uses
Pimcore Dark as the system default out of the box.
Configuration is useful to:
- change the initial system default theme,
- predefine themes as code (for version-controlled, pipeline-based deployments),
- control where themes are stored and whether they can be edited from the UI.
Storage Location
Themes are stored through Pimcore's location-aware configuration
(scope backend_power_tools_theme_manager). The read and write targets are configured under
config_location.theme_manager:
# config/config.yaml
pimcore_backend_power_tools:
config_location:
theme_manager:
write_target:
# symfony-config (default) | settings-store | disabled
type: 'settings-store'
read_target:
type: 'settings-store'
symfony-config– themes are written to and read from YAML files in the configured directory (the default).settings-store– themes are stored in the Pimcore settings store (database).disabled(write target only) – makes the theme configuration read-only.
When the write target is disabled, the Theme Manager UI is read-only and the
GET /theme-manager/themes response reports "writeable": false.
Predefining Themes
You can define themes directly in configuration. The key is the theme id; the shape mirrors the theme configuration:
# config/config.yaml
pimcore_backend_power_tools:
theme_manager:
# Id of the theme used as the system default. Defaults to 'pimcore-dark'.
default_theme: 'pimcore-dark'
themes:
corporate:
label: 'Corporate'
description: 'Company-wide branded light theme'
# A registered theme dynamic type id (see Custom Token Sets).
token_set: 'studio-default-light'
branding:
background_shade: '#0B5FFF'
brand_color: '#0B5FFF'
custom_logo:
id: 83
type: asset
login_screen_custom_background_image:
id: 84
type: asset
extensions: []
Supported keys per theme are label, description, token_set, branding
(background_shade, brand_color, custom_logo, login_screen_custom_background_image) and extensions.
The loading-screen boot palette is not part of the theme configuration tree. For a theme defined in configuration, the loading screen follows the boot palette registered for its token set – see Boot Palette Providers. The per-theme boot palette editor in the UI stores its values through the configured storage target, not through the Symfony configuration tree.
custom_logo and login_screen_custom_background_image reference assets by numeric id. Hard-coding asset ids in
configuration only works if the referenced assets exist in every environment – prefer managing branding imagery
through the Theme Manager UI when asset ids differ per environment.