Fragen zu Subshops / Subshop-Config im Backend laden

Hallo zusammen, Beim Arbeiten mit Sprachshops bin ich auf ein Problem gestoßen. Um den Kontext zu wahren muss ich etwas ausholen. Ich habe ein Zahlungsplugin, welches die Möglichkeit bietet für alle Sprachshops eine andere Konfiguration zu hinterlegen. Zudem soll beispielsweise im Backend eine Bestellung erstattet werden können, hierfür wird die Konfiguration benötigt. Wenn eine Bestellung angelegt wird ist dort immer der Hauptshop hinterlegt, was eine Zuordnung im Backend unmöglich macht. In der Klasse sOrder wird immer auf den Hauptshop geprüft und der Bestellung hinterlegt. Mein Vorhaben ist also mit Sprachshops nicht umsetzbar. Hier müssen also Subshops genutzt werden. Dazu habe ich ein paar Fragen: 1. Kann der Scope der Konfigelemente so gesetzt werden, dass er nur auf die Subshops /Hauptshops greift und Sprachshops erben von ihren Hauptshops? Im Code habe ich nur SCOPE_SHOPS und SCOPE_LOCALE gefunden, aber die helfen mir leider nicht. 2. Ist es Möglich im Backendcontroller eine spezifische Konfiguration zu laden bzw. von einem bestimmten Subshops? Mir sind nur 2 Wege bekannt eine Config zu laden: $MeinePluginConfig = Shopware()->Plugins()->Frontend()->MeinPlugin()->Config(); $MeineShopConfig = Shopware()->Config(); Bei beiden Varianten Fehlt mir der Scope vom Shop. Dank dem Wiki Haupt-Sub und Sprachshops kann ich mir die Antwort denken, aber ich möchte mich nochmal absichern: 3. Werden erstellte Bestellungen dem entsprechenden Subshop zugewiesen oder wird dies dem Hauptshop zugeteilt, wie bei den Sprachshops? Beste Grüße, Stefan

Hallo Stefan, ich hatte die gleiche Herausforderung für ein eigenes Plugin. Soweit ich weiß, wird der Scope zentral bestimmt und die Config danach aufgebaut. Mit den vorhandenen Objekten kam ich nicht weit, da man dort den Scope nicht als Parameter angeben kann. Du kannst dir aber ein eigenes Config-Objekt für einen bestimmten Scope (hier Shop ID 2) erstellen: $shopId = 2; $config = array(); $config['shop'] = Shopware()-\>Models()-\>find("Shopware\\Models\\Shop\\Shop", $shopId ); $config['db'] = Shopware()-\>Db(); $scopeConfig = new \Shopware\_Components\_Config( $config ); //echo $scopeConfig-\>get('dein\_config\_value');

2 Likes