Magento 2 – Share Cart in Multistore

cartmagento2PHPshopping-cart

I have a magento 2 website where we want to have 3 different stores on 3 different domains. We want to share cart and customer session on the different websites. Each website/store will have different catalog.

Now my questions follow as:

  1. What should be the proper configuration of stores to achieve this?
  2. Is it possible to achieve this in Magento 2?

Best Answer

Finally I sorted it out. So for sake of others, here is how we share cart between Magento multistore setup on different domains:

Magento configuration:

  1. Create 2 different stores, store views under a single website. enter image description here

Also check if you have assigned respective root categories to their stores like this:

enter image description here

  1. Assign Domains to Stores

We will assign our primary domain to the main store.

a. Go to Admin -> Stores -> Settings -> Configuration. Now click on General -> Web in the left tab. In the “Base URLs” section, update the “Base URL” configuration. Here you will add your primary domain like http://mystore.com/

b. If you have SSL enabled domain, add the https://mystore.com in “Base URLs (Secure)” section.

enter image description here

c. Open the “Default Cookie Settings” section on the same page

d. Set the “Cookie Path” setting to “/”.

enter image description here

e. Save the configuration.

Now select the second store view from store selector dropdown on the top. Perform the above specified steps for second store also.

  1. Share Customer Accounts

If we want to share the customer accounts on different stores, we will have to change one more setting.

a. Go to Stores -> Customers -> Customer Configuration tab.

b. Find the “Account Sharing Options” section.

c. Set the “Share Customer Accounts” setting to “Global”

d. Save the configuration

enter image description here

Server Configuration Next step is to configure our Web server (Apache/Nginx) to enable multistore installation. Lets see how to configure Apache. a. Open the .htaccess at the root of the Magento 2 installation b. On the top of .htaccess file, add following lines:

SetEnvIf Host myfurniturestore.com MAGE_RUN_CODE=store1
SetEnvIf Host myfurniturestore.com MAGE_RUN_TYPE=store
SetEnvIf Host ^myfurniturestore.com MAGE_RUN_CODE=store1
SetEnvIf Host ^myfurniturestore.com MAGE_RUN_TYPE=store

SetEnvIf Host myfashionstore.com MAGE_RUN_CODE=store2
SetEnvIf Host myfashionstore.com MAGE_RUN_TYPE=store
SetEnvIf Host ^myfashionstore.com MAGE_RUN_CODE=store2
SetEnvIf Host ^myfashionstore.com MAGE_RUN_TYPE=store

IMPORTANT:

But remember that Magento 2 cant share the cart and customer session if the different stores are accessed directly. Because Magento needs to see the Session ID to enable cart and customer account sharing. So we need to add the SID parameter to URLs pointing to other stores from our site. It is better to use Magento’s default store switcher for moving between different stores so that cart and customer session can be shared.

More explanation: http://www.webspeaks.in/2016/08/share-cart-magento-2-multistore-website.html

Related Topic