Scope_Shop: verschiedene Werte aus dem Config speichern

Ich muss bei meinem Plugin verschiedene Werte aus der Pluginkonfiguration für verschiedene SubShops speichern können, um mit diesen Werten dann im Bootstrap noch weiter zu arbeiten. Im Pluginkonfiguration möchte ich für den deutschen Shop einen Wert und für den englischen shop(subshop) einen anderen Wert vergeben können. Und ich möchte diese beiden unterschiedlichen Werte jeweils in eine Variable speichern und damit dann im Bootstrap weiterarbeiten. Ich weiß nicht wie ich die Werte aus dem beiden Pluginkonfigurationen einzeln ansprechen kann, um Sie dann jeweils in eine Variable zu speichern. im Bootstrap habe ich den scope Eigenschaft schon gesetzt. $form = $this-\>Form(); $form-\>setElement('number', 'categoryID', array( 'label' =\> 'Kategorie ID', 'minValue' =\> 0, 'value' =\> 3, 'scope' =\> Shopware\Models\Config\Element::SCOPE\_SHOP ) ); Und ich kann den Wert so ansprechen. $config = Shopware()-\>Plugins()-\>Frontend()-\>MeinPlugin()-\>Config(); $category\_ID = $config['categoryID']; Damit speichere ich aber nur den Wert das ich bei der Pluginkoniguration für Deutsch eintippe. Ich habe den selben Eingabefeld auch für Englisch. Bis jetzt habe ich es nicht geschafft auch den Wert aus der englischen Pluginkonfiguration seperat in eine andere Variable zu speichern. !? Wie kann ich dieses Problem lösen?

Du kannst die Daten manuell auslesen oder du registrierst erst den Shop mit Shopware()->Bootstrap->registerRecsource( „shop“, $shop ). Danach sollte die Konfiguration des angegebenen Shops geladen werden. Viele Grüße

hmm… kannst du mir vielleicht mit etwas Code verdeutlichen wie du das meinst? Danke.

$id\_des\_englischen\_shops = 2; $shop = Shopware()-\>Models()-\>find( 'Shopware\Models\Shop\Shop', $id\_des\_englischen\_shops ); Shopware()-\>Bootstrap()-\>registerRescource( "shop", $shop ); $englische\_config = Shopware()-\>Plugins()-\>Frontend()-\>MeinPlugin()-\>Config(); Ungetestet - aber prinzipiell sollte es funktionieren. Viele Grüße

Ok, ich habs probiert… Nur leider bekomme ich irgendwie immer noch nicht den Wert aus der englischen… Hier noch mal der Code zur Veranschaulichung… [code]<?php class Shopware_Plugins_Frontend_MeinPlugin_Bootstrap extends Shopware_Components_Plugin_Bootstrap
{


public function install()
{
    $this->createConfiguration(); $this-\>registerCronJobs(); //clears the chache return array('success' =\> true, 'invalidateCache' =\> array('frontend')); } public function createConfiguration() { $form = $this-\>Form(); $form-\>setElement('number', 'categoryID', array( 'label' =\> 'Kategorie ID', 'minValue' =\> 0, 'value' =\> 3, 'scope' =\> Shopware\Models\Config\Element::SCOPE\_SHOP ) ); } /\*\* \* This function registers all necessary information to make the cronjob work. \*/ private function registerCronJobs() { $this-\>createCronJob( 'MyPluginCron', 'MeinPluginCron', 3600, true ); $this-\>subscribeEvent( 'Shopware\_CronJob\_MeinPluginCron', 'onRunMeinPluginCronJob' ); } /\*\* \* Cronjob \*/ public function onRunMeinPluginCronJob(Shopware\_Components\_Cron\_CronJob $job) { //der Wert aus dem deutschen $config = Shopware()-\>Plugins()-\>Frontend()-\>MeinPlugin()-\>Config(); $category\_ID = $config['categoryID']; Shopware()-\>Debuglogger()-\>info('\*\*\* ID deutsch = ' .$category\_ID); //Der Wert aus dem englischen $id\_des\_englischen\_shops = 2; $shop = Shopware()-\>Models()-\>find( 'Shopware\Models\Shop\Shop', $id\_des\_englischen\_shops ); Shopware()-\>Bootstrap()-\>registerResource( "shop", $shop ); $englische\_config = Shopware()-\>Plugins()-\>Frontend()-\>MeinPlugin()-\>Config(); $category\_ID2 = $englische\_config['categoryID']; Shopware()-\>Debuglogger()-\>info('\*\*\* ID 2 = ' .$category\_ID2); return true; } }//end class ?\> [/code] Ich bekomme bei den beiden Ausgaben immer die gleiche Ziffer ausgegeben! Obwohl ich unterschiedliche Werte in der Config eingebe.

So hat es bei mir nun geklappt. Ich hab den Code hier im Forum irgendwo gefunden…:wink: [code]<?php class Shopware_Plugins_Frontend_MeinPlugin_Bootstrap extends Shopware_Components_Plugin_Bootstrap
{


public function install()
{
    $this->createConfiguration(); $this-\>registerCronJobs(); //clears the chache return array('success' =\> true, 'invalidateCache' =\> array('frontend')); } public function createConfiguration() { $form = $this-\>Form(); $form-\>setElement('number', 'categoryID', array( 'label' =\> 'Kategorie ID', 'minValue' =\> 0, 'value' =\> 3, 'scope' =\> Shopware\Models\Config\Element::SCOPE\_SHOP ) ); } /\*\* \* This function registers all necessary information to make the cronjob work. \*/ private function registerCronJobs() { $this-\>createCronJob( 'MyPluginCron', 'MeinPluginCron', 3600, true ); $this-\>subscribeEvent( 'Shopware\_CronJob\_MeinPluginCron', 'onRunMeinPluginCronJob' ); } /\*\* \* Cronjob \*/ public function onRunMeinPluginCronJob(Shopware\_Components\_Cron\_CronJob $job) { //der Wert aus dem deutschen Shop $config = Shopware()-\>Plugins()-\>Frontend()-\>MeinPlugin()-\>Config(); $category\_ID = $config['categoryID']; Shopware()-\>Debuglogger()-\>info('\*\*\* ID deutsch = ' .$category\_ID); //der Wert aus dem englischen Shop $shopId\_english = 2; $config = array(); $config['shop'] = Shopware()-\>Models()-\>find("Shopware\\Models\\Shop\\Shop", $shopId\_english ); $config['db'] = Shopware()-\>Db(); $scopeConfig = new \Shopware\_Components\_Config( $config ); $category\_ID2 = $scopeConfig['categoryID']; Shopware()-\>Debuglogger()-\>info('\*\*\* ID ENGLISH = ' .$category\_ID2); return true; } } ?\> [/code] Vielen Dank für die Hilfe.