在像/服装这样的分类页面上如何更改它只显示衣服而不是服装及其子类别中的产品?在taxons_controller.rb中,它正在调用
@searcher = build_searcher(params.merge(:taxon => @taxon.id))
@products = @searcher.retrieve_products
在retrieve_products https://github.com/spree/spree/blob/85da083faf81a4b0150e183d2f7aec988e674b07/core/lib/spree/core/search/base.rb#L15中,它正在使用
get_base_scope
反过来使用:
base_scope.in_taxon(taxon) unless taxon.blank?
https://github.com/spree/spree/blob/b66ea0229646062acb7b6f89ac2447f5ffc862fb/core/app/models/spree/product/scopes.rb#L78甚至在范围内说它包含后代。如何覆盖此选项以仅显示当前类别中的产品?
答案 0 :(得分:2)
发现我必须覆盖模型中的搜索范围。如果有人发现这个,请参考:
module Spree
Product.class_eval do
add_search_scope :in_taxon do |taxon|
Spree::Product.joins(:taxons).where(Taxon.table_name => { :id => taxon.id }).
order("spree_products_taxons.position ASC")
end
end
end