sSYSTEM->sUSERGROUP - Anpassen

Hallo, ich versuche die sUSERGROUP zur Laufzeit anzupassen: $this-\>subscribeEvent('sSystem::sUsergroup::replace','sUsergroup',0); ... ... function sUsergroup(Enlight\_Hook\_HookArgs $args) { return "123"; } Leider klappt das nicht wie gewollt. In der sSystem.php finde ich auch keinen Anhaltspunkt. Da wird die Variabel nur deklariert: var $sUSERGROUP; // Current customer-group (Scope) Wo muss ich ansetzen, dass ich dies ändern kann?

das wird so nicht funktionieren. du muss eher die stelle(n) finden wo sSYSTEM->sUSERGROUP geschrieben wird, und inständig hoffen, daß das nur an einer zentrale stelle passiert :slight_smile: gefunden habe ich sAdmin::sCheckUser() danach könntest du per $this->sSYSTEM->sUSERGROUP = rand(1,10); überschreiben. apropos hoffen: ich hatte auch mal gehofft, daß der preis eines artikels an zentraler stelle ermittelt wird… :stuck_out_tongue: vielleicht kommt das ja mit 4.1

Hi bui_ak, ich stehe auf dem Schlauf bzw. klappt es nicht so wie ich es mir vorstelle. In vielen Methoden u.a. sGetArticleByID, ByCategory etc. wird auf $this->sSYSTEM->sUSERGROUP zugegriffen. Du meinst jetzt ich sollte auf Hooks von sCheckUser() mit :after zugreifen und $this->sSYSTEM->sUSERGROUP mit meiner Kundengruppe überschreiben. habe ich mal so gemacht: $this-\>subscribeEvent('sAdmin::sCheckUser::after','sCheckUser',0); .. .. .. function sCheckUser(Enlight\_Hook\_HookArgs $args) { var\_dump('test'); } Es passiert nichts. Ich glaube die Function wird nicht aufgerufen. Klicke ich dann allerding auf “Mein Konto” so sehe ich die dump Ausgabe. Also wird dieser sCheckUser nur dort ausgeführt. Ich brauche aber die sUSERGROUP für Besucher, sprich den anonymen Shopzugriff.

Evtl. reicht es ja, wenn ich Shopware()->Modules()->sSystem()->sUSERGROUP = “2”; setze, nachdem Shopware selbst die Variable füllt. Nur brauche ich hier die richtige Stelle für den anonymen Zugriff ohne Kundenkonto.

Hallo Benny, probiers mal hier: Shopware_Plugins_Core_System_Bootstrap::onInitResourceSystem()

Hi Ralf, ich habs nun so versucht: $this-\>subscribeEvent('Shopware\_Plugins\_Core\_System\_Bootstrap::onInitResourceSystem::after','onInitResourceSystem',0); ... ... function onInitResourceSystem(Enlight\_Hook\_HookArgs $args) { Shopware()-\>Modules()-\>sSystem()-\>sUSERGROUP = "2"; var\_dump(Shopware()-\>Modules()-\>sSystem()-\>sUSERGROUP); var\_dump('test'); } Sieht aber so aus, als würde dies nicht ausgeführt werden.

Hab das selbst noch nicht verwendet. Aber schau doch mal in die install-Funktion.

habe es nun angepasst. Leider weiterhin ohne Funktion: $this-\>subscribeEvent( 'Enlight\_Bootstrap\_InitResource\_Modules', 'onInitResourceModules' ); ... ... public static function onInitResourceSystem(Enlight\_Event\_EventArgs $args) { Shopware()-\>Modules()-\>sSystem()-\>sUSERGROUP = "2"; var\_dump(Shopware()-\>Modules()-\>sSystem()-\>sUSERGROUP); var\_dump('test'); }

Wollte ja eigentlich nur die Stelle zeigen, an der die Initialisierung stattfindet. :wink: Würds mal so probieren. Weiß aber nicht obs funktioniert. $this-\>subscribeEvent( 'Enlight\_Bootstrap\_InitResource\_System', 'onInitResourceSystem' ); public static function onInitResourceSystem(Enlight\_Event\_EventArgs $args) { ... return $system; }

Das geht leider auch nicht. Scheinbar wird die Funktion überhaupt nicht aufgerufen :frowning:

Also ich habe jetzt mal direkt im Plugin default / Core / System hardcodet dies reingeschriebe: $system->sUSERGROUP = ‘H’; return $system; Trotzdem wird die Kundengruppe EK verwendet. Alles nicht so einfach.

Ich habe nun etwas mehr getestet. Die original System Funktion habe ich einfach mal angepasst: $system-\>sUSERGROUP = "H"; var\_dump($system-\>sUSERGROUP); return $system; Dies wird nun auch ausgeführt und ich bekomme den Dump ausgegeben. Nun gehe ich davon aus, dass in $system->sUSERGROUP = “H” hinterlegt ist. Öffne ich aber eine Artikeldetailseite, so wird mir immer noch der EK Preis angezeigt. Schaue ich mir sGetArticleByID genauer an, so steht nun in $this->sSYSTEM->sUSERGROUP meine definierte H Kundengruppe. Trotzdem habe ich aber noch den EK Preis. Also muss wohl noch mehr dabei eine Rolle spielen. Mache ich nun eine neue Kundengruppe mit einem anderen Preis, so klappt es. EK und z.B. TEST Definiere ich hier nun $system->sUSERGROUP = “TEST”; so wird mit der Korrekte Brutto Preis für TEST angezeigt. Nimm ich aber nun wieder H so sehe ich den Brutto Preis von Hier muss es noch eine Unterscheidung geben.

Okay, habe es heraus. USERGROUP alleine reicht nicht! $system-\>sUSERGROUP = "H"; $system-\>sUSERGROUPDATA = array('id'=\>1, 'key'=\>'H', 'tax'=\>0); Das geht nun.

Moin Zusammen, so ganz zufrieden bin ich noch nicht. ich weiß zwar wo und wie ich nun alles beinflussen kann, aber es funktioniert leider nur, wenn ich es direkt in die Core Dateien schreibe. Sprich in /webseiten/shopwareV4/engine/Shopware/Plugins/Default/Core/System/Bootstrap.php public static function onInitResourceSystem(Enlight\_Event\_EventArgs $args) { //original Code //.. //.. $system-\>sUSERGROUP = "H"; $system-\>sUSERGROUPDATA = array('id'=\>1, 'key'=\>'H', 'tax'=\>0); var\_dump($system-\>sUSERGROUP); var\_dump($system-\>sUSERGROUPDATA); return $system; } So sehe ich nun im Frontend die Dump Ausgabe und die Kundengruppe welche ich direkt definiere wird übernommen. Die Frage ist nun aber noch, wie ändere ich diese Informationen in einem eigenem Plugin? Ich habe es mit der gleichen isntall-Methode versucht als Event wie in den Core Dateie: $this-\>subscribeEvent( 'Enlight\_Bootstrap\_InitResource\_Modules', 'onInitResourceModules' ); Klappt nicht. Dann habe ich es als Hook versucht: $this-\>subscribeEvent( 'Enlight\_Bootstrap\_InitResource\_Modules::after', 'test',0 ); Klappt auch nicht. Kann mir hier bitte jemand Weiterhelfen? Shopware :shopware: ? Danke

Moin, wäre schön, wenn ich hier eine AW von Shopware bekommen könnte. :shopware: Es muss doch möglich sein, mit AFTER nach Enlight_Bootstrap_InitResource_Modules mit einem eigenen Plugin einzusteigen. Ich will ungern die Core Datei anpassen.