Kundengruppe über Plugin setzen

Liebe community,

ich suche schon seit Tagen nach einer Lösung für folgendes Problem:

Ich möchte über einen eigenen Plugin-Controller die Möglichkeit schaffen, dass Kunden nach dem Aufruf einer bestimmten URL (=controller) zusätzliche Produkte einer zusätzlichen Kategorie (ohne Anmeldung/Registrierung!) sehen sollen, die einem “normalen” Shopkunden verborgen sein sollen. Meine Idee war es, dafür eine eingene Kundengruppe einzurichten, die nach dem Aufruf des controllers gesetzt wird. Ich hatte dafür in dem entsprechenden controller versucht, über

 Shopware()-\>Shop()-\>setCustomerGroup($customergroup); 

die Kundengruppe zu setzen - leider ohne Erfolg. Wenn ich nach dem Aufruf der obigen Funktion über

 Shopware()-\>Shop()-\>getCustomerGroup()-\>getName();

die Kundengruppe abfrage, erscheint die Standard-Kundengruppe - meine Änderung schlägt sich also anscheinend nicht durch.

Das Business-Essentials Plugin von Shopware scheint mir leider nicht geeignet, denn hier ist bspw. die “geheime” Kategorie erst nach einer Registrierung sichtbar.

Kann mich vielleicht jemand in die richtige Richtung schubsen?

Vielen Dank schon mal,

Christian

Ich hole mir die Kundengruppe mit einer sql zur Überprüfung und  dann setze ich mit $ergebnis->setGroup($newgroup); die Gruppe neu.

Shopware\Models\Customer\Customer

Shopware\Models\Customer\Group

Hallo Brettvormkopp,

danke für Deine Antwort!
Ich habe das Vorgehen noch nicht ganz verstanden: 

Ich hole mir die Kundengruppe mit einer sql zur Überprüfung und  dann setze ich mit $ergebnis->setGroup($newgroup); die Gruppe neu.

Woher kommt denn $ergebnis? 

Meinst Du mit der SQL die bestehende oder die zu setzende Kundengruppe? Also in der Art „select * from s_core_customergroups where groupkey=$zuSetzendeKundengruppe“?

Mit dem Ergebnis instanziierst Du dann die $newgroup?

Shopware\Models\Customer\Customer

Shopware\Models\Customer\Group

Klappt das ganze auch, wenn der Besucher noch nicht angemeldet ist?

Vielen Dank schon mal für Deine Mühen!

Christian 

Mit meinem Plugin mach ich etwas anders als du vor hast, aber die vorgehensweise ist die selbe. Bei mir wandel ich Kunden in eine neue Kundengruppe um sobald sie eine Mindest-Bestellanzahl überschritten haben, sozusagen Endkunden werden Stammkunden nach 5 Bestellungen (gibt 5% Rabatt). Das läuft als Cronjob, der Kunde löst diese Funktion also nicht aus. Bei dir ist das ja anhand einer Kundenaktion wenn dieser eine bestimmte URL aufruft. Dazu muss natürlich die Kunden-ID des Kunden übergeben werden, damit die SQL überhaupt weiss wen sie selecten und ändern soll. Und soweit ich das weiss geht das nur wenn der Kunde eingeloggt ist.

Wie ich deine Schritte verstanden habe:

  1. Kunde ist Endkunde und sieht Artikel nicht

  2. URL->Controller (mit KundenID) -> Kundengruppe umwandeln

  3. Kunde ist Stammkunde und sieht den Artikel

Eine andere Idee wäre das ganze mit simplen Cookies zu lösen, dazu müsste dann der Kunde nicht eingeloggt sein und er würde nur das Produkt sehen wenn er sich vorher irgendwo einen speziellen Cookie abgeholt hat.

1 „Gefällt mir“
  1. Kunde ist Endkunde und sieht Artikel nicht

  2. URL->Controller (mit KundenID) -> Kundengruppe umwandeln

Mein Problem ist, dass der Kunde noch gar nicht eingeloggt sein muss, um die entsprechenden Sonderartikel zu sehen, d.h. ich muss irgendwie in der Lage sein, per Plugin die Standardkundengruppe der Session (‚EK‘) zu ändern, ohne dass der Kunde eingeloggt ist. Es kann durch den entsprechenden use case sogar sein, dass der Besucher noch gar kein Kundenkonto hat, sondern durch einen Promolink auf die Seite kommt.

Eine andere Idee wäre das ganze mit simplen Cookies zu lösen, dazu müsste dann der Kunde nicht eingeloggt sein und er würde nur das Produkt sehen wenn er sich vorher irgendwo einen speziellen Cookie abgeholt hat.

Das hatte ich mir auch schon überlegt, allerdings müsste ich dann zusätzlich in den entsprechenden Listing- und Kategorie-Controllern ensprechende Prüfungen einbauen, ob das cookie gesetzt ist. Wenn die entsprechende Kundengruppe schon gesetzt wäre, wäre das einfacher, denn dann könnte man die entsprechenden Produkte/Kategorien einfach auf die Kundengruppe einschränken.

Ich habe mir schon einen Wolf gesucht, wo im Dispatchloop die Kundengruppe initial gestetzt wird, aber die Stelle bisher nicht gefunden; vielleicht könnte ich mich dann da einklinken.

Hat vielleicht ein Guru von Shopware einen Tipp?