Vererbung & Overrides
views, sw_extends, configInheritance
Ein Theme schreibt die Storefront selten komplett neu – es erbt vom Standard und überschreibt gezielt. Vererbung passiert an drei Stellen: Templates, Stile und Konfiguration.
Template-Vererbung über views
Der views-Block in theme.json legt die Auflösungsreihenfolge für Templates fest:
"views": [
"@Storefront",
"@Plugins",
"@MyTheme"
]
Gesucht wird von links nach rechts – die letzte passende Datei gewinnt. So kann @MyTheme einzelne Templates der Storefront überschreiben, ohne den Rest anzutasten.
Templates gezielt überschreiben
Um ein Template zu ändern, legt man es im Theme unter demselben Pfad an und erbt vom Original per sw_extends:
{# Resources/views/storefront/layout/header/logo.html.twig #}
{% sw_extends '@Storefront/storefront/layout/header/logo.html.twig' %}
{% block layout_header_logo_link %}
{{ parent() }}
{# eigene Ergänzung #}
{% endblock %}
sw_extends erbt das Original, einzelne {% block %} überschreiben punktgenau – {{ parent() }} behält den ursprünglichen Inhalt bei.
Auf einem Eltern-Theme aufbauen
Ein Theme kann nicht nur von der Standard-Storefront erben, sondern von einem anderen Theme. Über configInheritance übernimmt es dessen Theme-Manager-Felder und Werte:
"configInheritance": [
"@Storefront",
"@BasicTheme"
]
Aus der Doku: Alle Felder und Werte der genannten Themes stehen im aktuellen Theme zur Verfügung, sofern sie nicht ausdrücklich überschrieben werden. So definiert ein Basis-Theme den Corporate-Standard, Kind-Themes weichen nur dort ab, wo nötig – ohne Duplikate.
Stile erben nach demselben Prinzip
Auch der style-Block funktioniert über Reihenfolge: @Storefront (oder ein Eltern-Theme) zuerst, eigene SCSS danach. Später geladene Regeln und Variablen gewinnen.
Kurz:
viewssteuert Template-Overrides (letzter gewinnt,sw_extends+ Blocks),configInheritanceerbt Theme-Manager-Optionen. Erben statt neu schreiben – gezielt überschreiben, wo es nötig ist.