Magento provides and incredible feature to create multiple stores under same code base and admin panel. We can share cart in magento 2 multistore website. You can run variety of stores from a single Magento admin panel. You may have setup different stores on subdomains like furniture.mystore.com
and fashion.mystore.com
. Or it could be on separate domains like myfurniturestore.com
and myfashionstore.com
. Now you would like your customers to buy from furniture store and then carry the same cart to fashion store or vice versa. Its a good feature to share carts and customer accounts across your multiple stores. In this article we will see how we can achieve this feature in Magento 2 without any coding required.
Here we will assume that we want to setup multiple stores on different domains. So we will start by creating multiple store views and stores.
1. Create Stores
Go to Admin -> Stores -> Settings -> All Stores and create multiple store views and stores. Assign the store views to respective stores. Your store configuration might look like:
Also check if you have assigned respective root categories to their stores like this:
2. 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.
c. Open the “Default Cookie Settings” section on the same page
d. Set the “Cookie Path” setting to “/”.
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.
3. 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
Now we are done with the Magento configuration.
Server Configuration
Next step is to configure our Web server (Apache/Nginx) to enable multistore installation. In this article we will 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
c. Save the .htaccess
file.
Thats all for configuring different stores on multiple domains.
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.
Thanks for this nice article. Have a question. We would like to share the customer session, but want to have different cart for each store. Possible?
@Lak, I dont think that is possible. I guess if customer session is saved, then cart would be shared. However I am not sure 🙂