This extension allows a single Solidus instance to have several customer facing stores, with a single shared backend administration system (i.e. multi-store, single-vendor).
-
Store model which has the following attributes:
1.1 name - The display name for the store.
1.2 domains - a line separated list of fully qualified domain names used to associate a customers session with a particular store (you can use localhost and/or IP addresses too).
1.3 code - which is a abbreviated version of the store's name (used as the layout directory name, and also helpful for separating partials by store).
1.4 default - one store should be marked a default as a fallback in case the URL being used to access the site cannot be matched against any of the configured stores.
-
Stores and domains can be maintained via the configuration section of the Admin interface
-
Each store can have its own layout(s) - these layouts should be located in your site's theme extension in the app/views/spree/layouts/store#code/directory. So, if you have a store with a code of "alpha" you should store its default layout in app/views/spree/layouts/alpha/spree_application.html.erb
-
Each product can be assigned to one or more stores.
-
All orders are associated with the store / domain that they were placed on.
-
Google analytics trackers can be associated with a store.
Add to your Gemfile:
gem "solidus_multi_domain"
Then run from the command line:
bundle install
rails g solidus_multi_domain:install
You should see 'Stores & Domains' in Configuration tab of Spree Admin.
To see if your stores indeed do point to the correct and unique domains, start your server with
rails s -p 3000 -b lvh.me
and give a store a domain like http://store1.lvh.me:3000/.
For discrete authorization, two permission sets have been added to allow for granular display in the admin.
Spree::PermissionSets::StoreDisplay
and Spree::PermissionSets::StoreManagement
have been added and can be assigned via RoleConfiguration
Then just run the following to automatically build a dummy app if necessary and run the tests:
bundle exec rake