As some of you already know multi-store support will be added in version 3.00 (you can discuss the entire roadmap here
). This task is quite complex. That's why I decided to create a separate forum topic. There are a lot of ways to implement multi-store. So let's discuss what
it should be implemented in nopCommerce.
Here are some points that should be considered/done:1. Mapping.
Some of the entities could be mapped/restricted to distinct shops: category, manufacturer, product, language, currency, message templates, topics, news, etc. I think it should be done similar to ACL (both user interface and implementation). There will be a separate "Stores" tab on the entity details page. There will a checkbox "Restricted to specific stores" (disabled by default). Once clicked a list of existing stores will be expanded so a store owner can choose store(s) to which he wants to restrict an entity. Discounts also could be restricted to a certain store, but it can be done as a new discount requirement plugin. All other entities will be shared between stores. I think that it will be enough for the first version of multi-store. In the next versions (after 3.00) some new entities could be added to this list. 2. Cart and order history sharing.
Some stores share their carts and orders, and customers putting items in their cart for a store 1 can see these items in their cart for a store 2. Some stores do not share carts and orders. I think the second approach (do not share) is better. Or we can allow a store owner to decide which of these options should be enabled (as you understand it's more complex)3. Settings.
Some settings could be configured globally for all stores and some of them will configured per store (for example, a store theme). There's no any certain list of such settings yet.4. Schedule tasks.
We should allow a store owner to decide on which store(s) a certain schedule task should be run. For example, "Send emails" task should be run only on one of the stores, and "Keep alive" on each store.5. Single sign-on and sign-out.
There's no good solution available for this task. Should it be supported?
If we decide to have one single installation for multiple stores, it becomes much easier to implement (points 4-6).
Anything else? Your thoughts, ideas, suggestions?UPDATE (Feb 17th):
Done. Please see this
post of mine