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: views steuert Template-Overrides (letzter gewinnt, sw_extends + Blocks), configInheritance erbt Theme-Manager-Optionen. Erben statt neu schreiben – gezielt überschreiben, wo es nötig ist.