This extension allows a single Spree 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 this extension to your Gemfile with this line:
gem 'spree_multi_domain', github: 'spree-contrib/spree-multi-domain'
gem 'spree_multi_domain', github: 'spree-contrib/spree-multi-domain', branch: 'X-X-stable'
The branch
option is important: it must match the version of Spree you're using.
For example, use 3-0-stable
if you're using Spree 3-0-stable
or any 3.0.x
version.
- Install the gem using Bundler:
bundle install
- Copy & run migrations
bundle exec rails g spree_multi_domain:install
- Restart your server
If your server was running, restart it so that it can find the assets properly.
You should see 'Stores & Domains' in Configuration tab of Spree Admin.
- Taxonomies - associate stores with taxonomies.