Il suffit de créer un multi_domain.rb initialiseur avec cela et ayant deux ou plusieurs magasins avec des codes uniques
store1 = Spree :: Store.find_by (code: "first_store")
magasin2 = Spree :: Store.find_by (code: "second_store")
Et vos vues séparées comme ceci:
app/views/fête/first_store/home/index.html.erb
app/views/fête/second_store/home/index.html.erb
L'initialisateur:
# config/multi_domain.rb
ActionView::PartialRenderer.class_eval do
def find_template_with_multi_store(path, locals)
prefixes = path.include?(?/) ? [] : @lookup_context.prefixes
store_prefixes = prefixes
store_path = path
if @view.respond_to?(:current_store) && @view.current_store && [email protected]_a?(Spree::Admin::BaseController)
store_prefixes = (store_prefixes.map { |i| i.gsub('spree/', "spree/#{@view.current_store.code}/") } + store_prefixes).uniq unless store_prefixes.nil?
store_path = store_path.gsub('spree/', "spree/#{@view.current_store.code}/") unless store_path.nil?
end
begin
@lookup_context.find_template(store_path, store_prefixes, true, locals, @details)
rescue ::ActionView::MissingTemplate
@lookup_context.find_template(path, prefixes, true, locals, @details)
end
end
alias_method_chain :find_template, :multi_store
end
ActionView::TemplateRenderer.class_eval do
def find_template_with_multi_store(name, prefixes = [], partial = false, keys = [], options = {})
if prefixes.nil?
store_prefixes = nil
elsif @view.respond_to?(:current_store) && @view.current_store && [email protected]_a?(Spree::Admin::BaseController)
spree = /^spree\//
store_prefixes = []
prefixes.each do |i|
store_prefixes << i.gsub(spree, "spree/#{@view.current_store.code}/") if i.match(spree)
end
store_prefixes = (store_prefixes + prefixes).uniq
else
store_prefixes = prefixes
end
begin
@lookup_context.find_template(name, store_prefixes, partial, keys, options)
rescue ::ActionView::MissingTemplate
@lookup_context.find_template(name, prefixes, partial, keys, options)
end
end
alias_method_chain :find_template, :multi_store
end
Cette implémentation fonctionne dans un magasin réel avec 10 domaines.
Ce genre de travaux, mais 'alias_method_chain' est maintenant dépréciée dans des rails 5.1. – Qwertie