Warenkorbfreigabe zwischen verschiedenen Stores der Website in Magento 2 deaktivieren?


7

Meine Website ist mit drei verschiedenen Storesund ich möchte die cart sharingFunktion zwischen den Geschäften deaktivieren . Wenn ich also von einem Geschäft zu einem anderen Geschäft wechsle, sollte das Produkt in meinem Warenkorb nicht gültig sein oder nicht in einem anderen Geschäft angezeigt werden.

Product added to the specific store should be displayed on the specific store only.

Ich denke, Sie haben ein Web -> ein Geschäft -> mehrere Ansichten?
Hassan Ali Shahzad

Ich habe 1 Website, 2 Geschäfte und 2 Geschäftsansichten (eine für jedes Geschäft).
Amitshree

Antworten:


2

Ich bin nicht sicher, ob dies funktioniert, es ist nur eine Idee: Das Angebot hat die Funktionalität, die Geschäfte anzugeben, die das Angebot teilen. Standardmäßig sind dies alle Geschäfte einer Website. Wenn es möglich ist, vor dem Laden des Angebots eine Liste mit speziellen Geschäften zu erstellen, ist es meines Erachtens möglich, das Angebot auf eine Teilmenge aller Geschäfte einer Website zu beschränken, in Ihrem Fall nur auf das eigentliche Geschäft.

Eine Idee könnte sein, die Speicherbeschränkung in einem Plugin vor der getMethode in festzulegen Magento\Quote\Model\QuoteRepository, die immer aufgerufen werden sollte, wenn ein Angebot geladen wird.

Auch hier ist es nur eine Idee, die möglicherweise nicht funktioniert und der Code wird nicht getestet und dient nur dazu, meine Gedanken zu demonstrieren.

class MyPlugin{

    protected $storeManager;

    public function __construct( 
        \Magento\Store\Model\StoreManagerInterface $storeManager
    ){
        $this->storeManager = $storeManager;
    }

    public function beforeGet(
        \Magento\Quote\Model\QuoteRepository $quoteRepository, 
         $cartId, 
         array $sharedStoreIds
    ){
        return [$cartId, [$this->storeManager->getStore()->getId()]];
    }
}

Ich freue mich darauf zu hören, was Sie über diesen Ansatz denken.


Ich werde versuchen, zu aktualisieren, wenn es funktioniert.
Amitshree

Großartiger Mann !!! :) +1
Rohan Hapani

Ich habe es versucht. Nur Artikel sind im Minicart-Bereich versteckt, aber sie sind sichtbar, andere Bereiche wie Warenkorb, Kasse.
Amitshree

0

Standardmäßig unterstützt Magento den Warenkorb für die gemeinsame Nutzung von Websites. Dazu müssen Sie die folgenden Einstellungen sicherstellen:

  1. Cookie-Pfad & Cookie-Domain

Cookie-Einstellung

  1. Kundenkonto teilen -> Global

Kundenkonto teilen

Um die Funktion zur gemeinsamen Nutzung von Einkaufswagen zu deaktivieren, empfehle ich, Ihre Cookie-Domain zu ändern. Z.B

Speicher 1: https://mystore.com=> Cookie-Domain:.mystore.com

Speicher 2: https://mystore2.com=> Cookie-Domain:.mystore2.com

Deaktivieren Sie die Funktion zum Freigeben von Kundenkonten. Andernfalls müssen Sie möglicherweise eine Möglichkeit finden, die Sitzungs-ID zwischen Filialen (SID) neu zu generieren. Der Magento Store Switcher hat automatisch die SID für Filialen hinzugefügt. Ich empfehle, den Filialumschalter nicht zu verwenden, sondern Ihren eigenen Filialumschalter zu entwickeln Vermeiden Sie angehängte SID.

Ich hoffe das hilft.


Ich habe nur eine Website und lade den zweiten Shop über website.com/store2. Ist die Erstellung von 2 Websites obligatorisch?
Amitshree

@amitshree Wenn Ihr Geschäft eine Domain wie verwendet website.com/store2, sollten Sie anstelle der Cookie-Domain in den Cookie-Pfad schauen.
Toan Nguyen

Ich habe den Cookie-Pfad für beide Store-Ansichten als / default und / Retail geändert. Trotzdem sehe ich, dass der Einkaufswagen geteilt wird.
Amitshree

0

Gehen Sie zu Ordner Location Vendor / Magento / Module-Checkout / Model / Open File Session.php. Suchen Sie nun in dieser Datei nach der Funktion _getQuoteIdKey und ersetzen Sie die Website-ID durch die Store-ID.

Ersetzen Sie diese Zeile

Geben Sie 'quote_id_' zurück. $ this -> _ storeManager-> getStore () -> getWebsiteId () mit dieser Zeile
geben 'quote_id_' zurück. $ this -> _ storeManager-> getStore () -> getStoreId ();

Jetzt arbeiten alle Warenkörbe aller Geschäfte, die zur selben Website gehören, unabhängig voneinander.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.