# Theme Vererbung: 2 Themes

**URL:** <https://forum.shopware.com/t/theme-vererbung-2-themes/68481>\
**Category:** Allgemein\
**Created:** [20. Juli 2020 um 17:26 UTC](https://forum.shopware.com/t/theme-vererbung-2-themes/68481 "2020-07-20T17:26:32Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![FloC3](https://avatars.discourse-cdn.com/v4/letter/f/838e76/32.png) [@FloC3](https://forum.shopware.com/u/FloC3)\
**Post date:** [20. Juli 2020 um 17:26 UTC](https://forum.shopware.com/t/theme-vererbung-2-themes/68481/1 "2020-07-20T17:26:32Z")

</div>

Hallo,

wir haben ein Konstrukt aus 2 Themes. Das erste basiert auf dem Shopware-Responsive, das zweite soll auf dem ersten basieren.

Das erste hat außerdem eine Theme-Config mit diversen Settings.

Wie stell ich die Vererbung richtig ein, damit ich das zweite Theme dem Sales-Channel zuweisen kann, und die **Twig-Blöcke, Styles, Scripts und Settings** aber aus dem ersten auch greifen?

In SW5 ging das ja ohne Probleme.

&nbsp;

Laut Release-Docs von 6.2.0 gibt es das. Aber leider steht nirgends, wie es geht…

> Die Theme Vererbung wurde verbessert, sodass nun Themes in beliebiger Tiefe von anderen Themes ableiten können.

&nbsp;

Theme-Config erstes:

```
"views": [
     "@Storefront",
     "@Plugins",
     "@MyFirstPlugin"
  ],
  "style": [
    "app/storefront/src/scss/overrides.scss",
    "@Storefront",
    "@Plugins",
    "app/storefront/src/scss/base.scss"
  ],
  "script": [
    "@Storefront",
    "app/storefront/dist/storefront/js/MyFirstPlugin-theme.js",
    "app/storefront/dist/storefront/js/MyFirstPlugin-header.js",
    "app/storefront/dist/storefront/js/MyFirstPlugin-register.js"
  ],
  "asset": [
    "app/storefront/src/assets"
  ],

```

&nbsp;

Theme-Config zweites:

```
"views": [
     "@Storefront",
     "@Plugins",
     "@MyFirstPlugin",
     "@MySecondPlugin"
  ],
  "style": [
    "app/storefront/src/scss/overrides.scss",
    "@Storefront",
    "@Plugins",
    "@MyFirstPlugin",
    "app/storefront/src/scss/base.scss"
  ],
  "script": [
    "@Storefront",
    "@MyFirstPlugin"
  ],
  "asset": [
    "app/storefront/src/assets"
  ]

```

&nbsp;

wenn ich das so Compile und dann zuweise, gibts aber immer Fehlermeldungen, dass die Variablen aus dem ersten Theme nicht gefunden werden… Das erste stand-alone funktioniert tadellos

---

<div class="post-metadata">

**Author:** ![EikeBrandtWarneke](https://avatars.discourse-cdn.com/v4/letter/e/cdc98d/32.png) [@EikeBrandtWarneke](https://forum.shopware.com/u/EikeBrandtWarneke)\
**Post date:** [20. Juli 2020 um 18:47 UTC](https://forum.shopware.com/t/theme-vererbung-2-themes/68481/2 "2020-07-20T18:47:56Z")

</div>

Du brauchst wirklich nicht zwei andere Threads pushen und noch zusätzlich einen eigenen öffnen.  
Keine Panik - du wirst schon nicht übersehen, wenn jmd. eine Antwort kennt.

Viele Grüße

---

<div class="post-metadata">

**Author:** ![FloC3](https://avatars.discourse-cdn.com/v4/letter/f/838e76/32.png) [@FloC3](https://forum.shopware.com/u/FloC3)\
**Post date:** [22. Juli 2020 um 07:08 UTC](https://forum.shopware.com/t/theme-vererbung-2-themes/68481/3 "2020-07-22T07:08:37Z")

</div>

du könntest auch einfach bei einer Lösung helfen, statt sowas zu posten.

der andere Thread läuft seit über 3 Monaten ohne Antwort oder Hilfe seitens Shopware. Irgendwann hätt ich dann doch gern mal Hilfe… muss doch jemand wissen, wie das geht…

---

<div class="post-metadata">

**Author:** ![FloC3](https://avatars.discourse-cdn.com/v4/letter/f/838e76/32.png) [@FloC3](https://forum.shopware.com/u/FloC3)\
**Post date:** [27. Juli 2020 um 09:00 UTC](https://forum.shopware.com/t/theme-vererbung-2-themes/68481/4 "2020-07-27T09:00:26Z")

</div>

kann hier niemand helfen? 😕

---

<div class="post-metadata">

**Author:** ![dweseom](https://avatars.discourse-cdn.com/v4/letter/d/e56c9b/32.png) [@dweseom](https://forum.shopware.com/u/dweseom)\
**Post date:** [27. Juli 2020 um 11:48 UTC](https://forum.shopware.com/t/theme-vererbung-2-themes/68481/5 "2020-07-27T11:48:20Z")

</div>

Du hast im anderen Thread geschrieben dass du zwei Themes hast, wenn ich mich richtig erinnere?

Das geht mit SW6 schlichtweg nicht - du musst dein erstes „Theme“ als Plugin erstellen und hier deine Anpassungen machen und dann mit dem echten Theme überschreiben.

---

<div class="post-metadata">

**Author:** ![FloC3](https://avatars.discourse-cdn.com/v4/letter/f/838e76/32.png) [@FloC3](https://forum.shopware.com/u/FloC3)\
**Post date:** [28. Juli 2020 um 09:09 UTC](https://forum.shopware.com/t/theme-vererbung-2-themes/68481/6 "2020-07-28T09:09:01Z")

</div>

@dweseom‍

ja, ich möchte 2 Themes machen. Eins für die ganzen generellen Einstellungen und dann noch eins für optische Sachen, speziell für das Projekt optimiert. Aktuell sind beide ein Plugin.

Das erste muss auch ein Plugin sein, denn darin gibts diverse Einstellungen und auch PHP-Geschichten. Beim 2. bin ich flexibel.

&nbsp;

> du musst dein erstes „Theme“ als Plugin erstellen und hier deine Anpassungen machen

–\> hab ich

> und dann mit dem echten Theme überschreiben

–\> wie erstelle ich denn ein „echtes“ Theme? Und wie überschreib ich dann bzw. wie muss ich das anordnen in der theme.json? Denn das 2. Theme soll ja vom&nbsp;1. „Plugin-Theme“ erben. So wie das auch in SW5 mit aufeinander aufbauenden Themes möglich war. In SW5 gabs dafür in der Theme.php ja die Einstellung&nbsp;\_ **protected $extend = ‚MyTheme‘;** \_ Wie geht das in SW6?

&nbsp;

---

<div class="post-metadata">

**Author:** ![FloC3](https://avatars.discourse-cdn.com/v4/letter/f/838e76/32.png) [@FloC3](https://forum.shopware.com/u/FloC3)\
**Post date:** [29. Juli 2020 um 13:31 UTC](https://forum.shopware.com/t/theme-vererbung-2-themes/68481/7 "2020-07-29T13:31:23Z")

</div>

wäre schön, wenn mir jemand helfen könnte

---

<div class="post-metadata">

**Author:** ![dweseom](https://avatars.discourse-cdn.com/v4/letter/d/e56c9b/32.png) [@dweseom](https://forum.shopware.com/u/dweseom)\
**Post date:** [29. Juli 2020 um 17:50 UTC](https://forum.shopware.com/t/theme-vererbung-2-themes/68481/8 "2020-07-29T17:50:21Z")

</div>

Du musst ein Theme schreiben und ein Plugin - das heißt ein richtiges Plugin und kein zweites Theme (im Plugin gibt es dann bspw. keine theme.json).

[https://docs.shopware.com/en/shopware-platform-dev-en/developer-guide/plugin-base](https://docs.shopware.com/en/shopware-platform-dev-en/developer-guide/plugin-base)

Also lediglich&nbsp;class SwagMonitoring extends Plugin

---

<div class="post-metadata">

**Author:** ![FloC3](https://avatars.discourse-cdn.com/v4/letter/f/838e76/32.png) [@FloC3](https://forum.shopware.com/u/FloC3)\
**Post date:** [29. Juli 2020 um 19:23 UTC](https://forum.shopware.com/t/theme-vererbung-2-themes/68481/9 "2020-07-29T19:23:52Z")

</div>

@dweseom‍

das bringt mir aber leider nichts…dann müsste ich das anders aufziehen…&nbsp;

dann bräuchte ich ein Plugin um Funktionen abzubilden und ein Theme um Basis-Styling abzubilden. Und dann noch ein weiteres Theme, um projektspezifische Änderungen zu machen.

Plugin -\> Theme 1 -\> Theme 2

Als Vererbungsreihenfolge? Natürlich muss zB. Theme 2 die Dinge von Plugin vererbt bekommen. Und natürlich auch die Dinge und Konfig-CSS-Variablen von Theme 1

Geht das?

---

<div class="post-metadata">

**Author:** ![rockinmc](https://avatars.discourse-cdn.com/v4/letter/r/58f4c7/32.png) [@rockinmc](https://forum.shopware.com/u/rockinmc)\
**Post date:** [30. Juli 2020 um 14:05 UTC](https://forum.shopware.com/t/theme-vererbung-2-themes/68481/10 "2020-07-30T14:05:24Z")

</div>

Schau dir mal [https://m.youtube.com/watch?v=rxKBSfI9Iq0&feature=youtu.be](https://m.youtube.com/watch?v=rxKBSfI9Iq0&feature=youtu.be)

---

<div class="post-metadata">

**Author:** ![FloC3](https://avatars.discourse-cdn.com/v4/letter/f/838e76/32.png) [@FloC3](https://forum.shopware.com/u/FloC3)\
**Post date:** [31. Juli 2020 um 06:28 UTC](https://forum.shopware.com/t/theme-vererbung-2-themes/68481/11 "2020-07-31T06:28:31Z")

</div>

leider bekomm ich es auch mit Hilfe des Videos nicht kompiliert …

&nbsp;

Parent-Theme:

```
"views": [
    "@Storefront",
    "@Plugins",
    "@ParentTheme"
  ],
  "style": [
    "app/storefront/src/scss/overrides.scss",
    "@Storefront",
    "@Plugins",
    "app/storefront/src/scss/base.scss"
  ],
  "script": [
    "@Storefront",
    "app/storefront/dist/storefront/js/parent-theme.js"
  ],

```

&nbsp;

Child-Theme:

```
"views": [
     "@Storefront",
     "@Plugins",
     "@ParentTheme",
     "@ChildTheme"
  ],
  "style": [
    "app/storefront/src/scss/overrides.scss",
    "@ParentTheme",
    "app/storefront/src/scss/base.scss"
  ],
  "script": [
    "@ParentTheme",
    "app/storefront/dist/storefront/js/child-theme.js"
  ],
  "asset": [
    "app/storefront/src/assets"
  ]

```

&nbsp;

hab mich an das Video gehalten… aber irgendwas klappt wohl noch nicht.

liegt es evtl. dran, dass die Vererbung der SCSS-Variablen aus dem Theme noch nicht klappt (wie im Video erwähnt)? Aber ich möchte ja eigentlich die Variablen nicht vererben, ich möchte sie nur im Parent Theme verwenden da wo sie auch gepflegt werden. Wenn ich im Parent also “rot” einstelle, wird dort im CSS “rot” gesetzt. Aber das “rot” soll natürlich auch bis zum Child-Theme durchschlagen…&nbsp;

ich kann das Child aber gar nicht erst kompilieren…

```
 Unable to compile the theme "ChildTheme". Undefined variable $parent-settings-border-radius: /usr/www/users/shopware/custom/plugins/ParentTheme/src/Resources/app/storefront/src/scss/overrides.scss on line 20, at column 1 

```

das Parent-Theme lässt sich natürlich problemlos kompilieren

**EDIT** : wenn ich im Parent-Theme sämtliche Variablen rausnehme, und color: red!important schreibe, dann greift das auch im Child-Theme. Liegt also offenbar wirklich daran, dass die Variablen im Parent-Theme nicht korrekt kompiliert werden, wenn man ein Child-Theme aktiv hat…

---

<div class="post-metadata">

**Author:** ![FloC3](https://avatars.discourse-cdn.com/v4/letter/f/838e76/32.png) [@FloC3](https://forum.shopware.com/u/FloC3)\
**Post date:** [7. August 2020 um 21:44 UTC](https://forum.shopware.com/t/theme-vererbung-2-themes/68481/12 "2020-08-07T21:44:34Z")

</div>

Kann keiner helfen?

---

<div class="post-metadata">

**Author:** ![rockinmc](https://avatars.discourse-cdn.com/v4/letter/r/58f4c7/32.png) [@rockinmc](https://forum.shopware.com/u/rockinmc)\
**Post date:** [10. August 2020 um 11:21 UTC](https://forum.shopware.com/t/theme-vererbung-2-themes/68481/13 "2020-08-10T11:21:19Z")

</div>

Hey,

so direkt nicht, schaue aber mal bei [https://slack.shopware.com/](https://slack.shopware.com/) vorbei, da gibt es viele Entwickler, die ggf. helfen könnten.

---

<div class="post-metadata">

**Author:** ![TAB10](https://avatars.discourse-cdn.com/v4/letter/t/c68b51/32.png) [@TAB10](https://forum.shopware.com/u/TAB10)\
**Post date:** [11. August 2020 um 15:28 UTC](https://forum.shopware.com/t/theme-vererbung-2-themes/68481/14 "2020-08-11T15:28:55Z")

</div>

Hallo.

Hatte auch mega Probleme. Gibts ja leider keine Anleitung 😕 … (hustle)

1. Angefangen damit das beim Erstellen eines Themes auf die “Schreibweise” geachtet werden muss.  
Legt man (als Unwissender) ein Theme per console an mit dem Namen “testtheme” wird daraus ein Plugin -\> Testtheme (großgeschrieben)  
In der theme.json wird daraus jedoch name: “testtheme”, @testtheme usw.

Das führt leider dazu das das Theme nicht erkannt wird beim vererbten Kompilierungsversuch.  
Es muss somit in der theme.json so heissen wie das Plugin selbst.

1. Wenn dann namentlich alles passen sollte und die Variablen nicht erkannt werden wie bei @FloC3‍ " **muss**" derzeit, wie im Video auch bemerkt, leider das “config” Array aus dem Parenttheme “kopiert” werden in die Childtheme theme.json.  
&nbsp;

Hoffe das hilft.

gruß

&nbsp;

**EDIT:**  
Video description: \*Building themes with Shopware 6.2 is easy and fun.\* ![Halo](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/d6f31fb007077fa834e26f5b6a29275ae615cbd1.png "Halo")

&nbsp;

---

<div class="post-metadata">

**Author:** ![dweseom](https://avatars.discourse-cdn.com/v4/letter/d/e56c9b/32.png) [@dweseom](https://forum.shopware.com/u/dweseom)\
**Post date:** [24. August 2020 um 11:56 UTC](https://forum.shopware.com/t/theme-vererbung-2-themes/68481/15 "2020-08-24T11:56:48Z")

</div>

@FloC3‍

Unable to compile the theme “ChildTheme”. Undefined variable $parent-settings-border-radius: /usr/www/users/shopware/custom/plugins/ParentTheme/src/Resources/app/storefront/src/scss/overrides.scss on line 20, at column 1

–\> Verwendest du in einer deiner SCSS-Dateien deines Themes die Variable&nbsp;$parent-settings-border-radius?

–\> Ist $parent-settings-border-radius ein Integer-Feld?

Falls ja, musst du ein&nbsp;PluginVariablesSubscriber bauen, in welchem du deine Integer-Werte in Strings umwandelst und dann kannst du diese Werte im SCSS nutzen - hier erscheint dann auch der Error von oben nicht mehr

---

<div class="post-metadata">

**Author:** ![FloC3](https://avatars.discourse-cdn.com/v4/letter/f/838e76/32.png) [@FloC3](https://forum.shopware.com/u/FloC3)\
**Post date:** [24. August 2020 um 16:22 UTC](https://forum.shopware.com/t/theme-vererbung-2-themes/68481/16 "2020-08-24T16:22:25Z")

</div>

@dweseom‍

ich verwende die Variablen im Theme, in dem sie in der Theme-Config definiert werden,&nbsp;ohne Probleme. Nur vererben in ein weiteres Theme klappt wohl nicht.

und nein es ist kein Int sondern String&nbsp;

---

<div class="post-metadata">

**Author:** ![TAB10](https://avatars.discourse-cdn.com/v4/letter/t/c68b51/32.png) [@TAB10](https://forum.shopware.com/u/TAB10)\
**Post date:** [31. August 2020 um 16:42 UTC](https://forum.shopware.com/t/theme-vererbung-2-themes/68481/17 "2020-08-31T16:42:54Z")

</div>

@FloC3‍ es klappt wenn man das config array mit ins childtheme kopiert. siehe Antwort oben.

---

<div class="post-metadata">

**Author:** ![NextMike](https://avatars.discourse-cdn.com/v4/letter/n/838e76/32.png) [@NextMike](https://forum.shopware.com/u/NextMike)\
**Post date:** [13. Dezember 2021 um 11:32 UTC](https://forum.shopware.com/t/theme-vererbung-2-themes/68481/18 "2021-12-13T11:32:39Z")

</div>

es geht aber, m.E nicht um die Variablen aus „config“ in theme.json sondern um die aus dem Verzeichnis „scss/abstract/variables/“ (des Parent-Themes)

---

<div class="post-metadata">

**Author:** ![florian.kalango](https://avatars.discourse-cdn.com/v4/letter/f/f1d935/32.png) [@florian.kalango](https://forum.shopware.com/u/florian.kalango)\
**Post date:** [28. April 2022 um 14:36 UTC](https://forum.shopware.com/t/theme-vererbung-2-themes/68481/19 "2022-04-28T14:36:29Z")

</div>

Ich weiß ja nicht, ob das Thema für Dich noch relevant ist.  
Aber für jeden, der das selbe Problem hat - mir ging es nämlich genau so.  
Ein ChildTheme genau nach diese Anleitung erstellt:

1. [Theme erstellen](https://developer.shopware.com/docs/guides/plugins/themes/create-a-theme)

2. [Vererbung konfigurieren](https://developer.shopware.com/docs/guides/plugins/themes/add-theme-inheritance)

Aber egal, was ich anstellte, ich hatte das selbe Problem wie du.  
Die config {} Struktur des ParentThemes in mein ChildTheme zu kopieren behob zwar das Problem, konnte aber ja wohl nicht die Lösung sein - das läuft ja der Vererbung entgegen.

Letztlich war die Lösung total einfach. Nach Ergänzung der theme.json des ChildTheme muss zwingend in der Konsole der Befehl

bin/console theme:refresh

durchgeführt werden.  
Danach klappte die Vererbung problemlos; alle Config Elemente wurden korrekt angezeigt und auch die Fehlermeldung war verschwunden.
