Ich versuche gerade eine gekauftes Theme durch ein Child Theme zu erweitern. Leider funktioniert das nicht. Wenn ich den config-Node in der theme.json nicht in das Child kopiere, funktioniert es überhaupt nicht. Ich sehe die Standardansicht. Wenn ich den config-Node kopiere kommt es dem Original schon nahe aber nicht 100%. Die Views aus dem Parent werden nicht geladen.
Ich habe leider exakt das selbe Problem und habe wirklich schon mindestens 8-12 Stunden investiert. Die Doku gibt leider auch keine Erkenntniss. Gibt es dafür eine Lösung?
Ach ja, wichtige Info: Ich habe bereits Shopware 6.2 am Laufen, wo die Inheritance von mehreren Themes ja angeblich behoben wurde. Hier ist zudem meine Config:
{
"name": "CrehlerOrionChild",
"author": "Shopware AG",
"views": [
"@Storefront",
"@Plugins",
"@CrehlerOrion",
"@CrehlerOrionChild"
],
"style": [
"@Storefront",
"@CrehlerOrion",
"app/storefront/src/scss/base.scss"
],
"script": [
"@Storefront",
"@CrehlerOrion",
"app/storefront/dist/storefront/js/crehler-orion-child.js"
],
"asset": [
"app/storefront/src/assets"
],
"config": {
// Viel Config, die ich 1:1 aus dem Parent Theme kopieren muss, damit Sass kompiliert.
}
}
Wir hatten exakt das gleich Problem, haben die Vererbung aber nun mit folgenden Settings sauber am laufen (auch mit dem Orion-Theme als Base):
Unser Child-Theme und das Base-Theme sind beide auch tatsächlich Themes (“implements ThemeInterface”), das funktioniert seit der 6.2.0.
In der theme.json unseres Child-Themes muss bei den styles und den scripts @Storefront raus, da diese bereits über das Eltern-Theme eingebunden ist. Ansonsten werden die Styles und Scripts doppelt eigebunden, was zu unerwünschten Nebeneffekten führen kann. Sieht nun also so aus:
Zudem gibt es noch ein kleines Problem mit dem Orion-Theme im Backend. Wenn nicht das Orion-Theme direkt ausgewählt ist, ist das Speichern der Theme-Settings nicht möglich. Wir haben uns damit beholfen, dass wir temporär den Check im Orion-Theme direkt deaktiviert haben. Werden aber noch den Theme-Hersteller darauf hinweisen, dass sie das bei sich direkt entsprechend anpassen.
In der “CrehlerOrion/src/Resources/app/administration/src/extends/sw-theme-manager/page/sw-theme-manager-detail/index.js” haben wir die Methode onSave so angepasst, dass die zusätzliche Logik nur ausgeführt wird, wenn auch tatsächlich das Orion-Theme gewählt ist:
Danach, die Abhängigkeiten direkt im CrehlerOrion-Ordner laden (npm install) und anschließen “administration:build” ausführen.
Dann sollte alles passen und ihr könnt eure Theme-Settings im Backend auch speichern.
Der Code von codingstage_ps funktioniert bei mir. Ich habe jetzt aber leider das Problem, dass jeder Seitenaufruf bis zu 5min lädt, wenn ich das Child-Theme von Orion nutze. ich nutze Mamp für Mac OS und habe nur bei Shopware das Problem, dass es zu langsam lädt.
Danke. Die Vorgehensweise funktioniert auch bei mir.
Allerdings sind die config-Werte, die von /home/www/p560197/html/shopware/custom/plugins/CrehlerOrion/src/Resources/theme.json kopiert werden, nicht die vorher im Orion-Theme festgelegten Werte, sondern anscheinend Standard-Werte (alles sehr „rot“).
ich muss also die komplette Config aus dem Parent ins Child kopieren? Sorry das ist doch dämlich.
Wenn sich der Parent ändert, muss ich ja ständig die Config hin und her kopieren.
Konfiguriere ich dann das Parent-Theme und das Child hat automatisch die Werte? Oder muss ich das Child selbst auch nochmal konfigurieren?
sorry das ist keine Lösung für mich…
@FloC3 genau, ich musste auch ~7000 Zeilen Config, in die Child-Theme json packen, damit ich das zum Laufen bekommen habe. Kleiner Vorteil war, dass ich dadurch alles Unsinnige aus dem Parent-Theme deaktivieren oder Logos und Co auf „default“ setzen konnte. Wobei ich mich seit ein paar Tagen mit Anomalien herumschlage, weil es auf Dev Docker irgendwie anders verhält also auf dem Live Server wo das Theme dann final laufen soll.
ich habe mir jetzt meine eigene Theme-Vererbung über ein Plugin gebaut. War mir zu blöd, dass Shopware das nicht vernünftig hinkriegt. Wer Interesse hat: meldet euch