From ed43890f76f91fbf1618f7572c0f7a01f1007bf7 Mon Sep 17 00:00:00 2001 From: Tomek Urban Date: Thu, 13 Aug 2020 09:07:25 +0200 Subject: [PATCH] Fix PLP searcher (spree-multi-domain) --- core/app/models/spree/taxonomy.rb | 2 ++ .../20200813064956_add_store_to_spree_taxonomies.rb | 7 +++++++ frontend/app/controllers/spree/products_controller.rb | 4 +++- frontend/app/helpers/spree/frontend_helper.rb | 6 ++++++ 4 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 core/db/migrate/20200813064956_add_store_to_spree_taxonomies.rb diff --git a/core/app/models/spree/taxonomy.rb b/core/app/models/spree/taxonomy.rb index 83a3c23c502..93d8212ce84 100644 --- a/core/app/models/spree/taxonomy.rb +++ b/core/app/models/spree/taxonomy.rb @@ -6,11 +6,13 @@ class Taxonomy < Spree::Base has_many :taxons, inverse_of: :taxonomy has_one :root, -> { where parent_id: nil }, class_name: 'Spree::Taxon', dependent: :destroy + belongs_to :store, optional: true after_create :set_root after_save :set_root_taxon_name default_scope { order("#{table_name}.position, #{table_name}.created_at") } + scope :by_store, ->(store_id) { where(store_id: store_id) } private diff --git a/core/db/migrate/20200813064956_add_store_to_spree_taxonomies.rb b/core/db/migrate/20200813064956_add_store_to_spree_taxonomies.rb new file mode 100644 index 00000000000..06870b0070c --- /dev/null +++ b/core/db/migrate/20200813064956_add_store_to_spree_taxonomies.rb @@ -0,0 +1,7 @@ +class AddStoreToSpreeTaxonomies < ActiveRecord::Migration[6.0] + def change + unless column_exists?(:spree_taxonomies, :new_order_notifications_email) + add_reference :spree_taxonomies, :store, references: :spree_stores, index: true + end + end +end diff --git a/frontend/app/controllers/spree/products_controller.rb b/frontend/app/controllers/spree/products_controller.rb index b950828a727..666c15b32c0 100644 --- a/frontend/app/controllers/spree/products_controller.rb +++ b/frontend/app/controllers/spree/products_controller.rb @@ -9,8 +9,10 @@ class ProductsController < Spree::StoreController respond_to :html def index - @searcher = build_searcher(params.merge(include_images: true)) + @searcher = build_searcher(params.merge(include_images: true, current_store_id: current_store.id)) @products = @searcher.retrieve_products + @products = @products.includes(:possible_promotions) if @products.respond_to?(:includes) + @taxonomies = get_taxonomies last_modified = @products.maximum(:updated_at)&.utc if @products.respond_to?(:maximum) diff --git a/frontend/app/helpers/spree/frontend_helper.rb b/frontend/app/helpers/spree/frontend_helper.rb index 53a2695bea0..412e3dcecf8 100644 --- a/frontend/app/helpers/spree/frontend_helper.rb +++ b/frontend/app/helpers/spree/frontend_helper.rb @@ -288,6 +288,12 @@ def spree_social_link(service) end end + def get_taxonomies + @taxonomies ||= current_store.present? ? Spree::Taxonomy.by_store(current_store) : Spree::Taxonomy + @taxonomies = @taxonomies.includes(root: :children) + @taxonomies + end + private def formatted_price(value)