0

对于任何定制 Spree 以满足他们的需求的人来说,这可能是一项常规工作,但我很难做到这一点。

我想创建一个存储一系列产品的首选项,以便在主页中将它们显示为“特色产品”。我浏览了本指南,并且已经在我的应用程序树的lib/spree/下创建了一个文件。该文件如下所示:

class Spree::HomepageConfiguration < Spree::Preferences::Configuration
  preference :featured_products, :string
end

之后,我在application.rb文件的 autoload_paths 中添加了 lib/spree 文件夹:

config.autoload_paths += %W(#{config.root}/lib/spree/)

最后,我在config/initializers/下创建了一个名为homepage_configuration的初始化程序来配置首选项:

module Spree
  Spree::MyApp::Config = Spree::HomepageConfiguration.new
end

Spree::MyApp::Config[:featured_products] = ["a", "b"]

但是,当我运行服务器时,我得到了这个错误:

Expected C:/path/to/my/application/lib/spree/homepage_configuration.rb to define HomepageConfiguration (LoadError)

我不确定我做错了什么。欢迎任何建议。

我正在运行 Rails 3.2.13并使用来自1-3-stable分支的Spree 。

4

2 回答 2

1

甚至是一个非常古老的问题......最近我曾被问过同样的问题(配置站点范围的狂欢偏好)。

至于报告的错误和提供的代码,lib/spree/homepage_configuration.rb应该是:

module Spree
    class HomepageConfiguration < Spree::Preferences::Configuration
      preference :featured_products, :string
    end
end

这是我最近给出的配置示例的示例要点https://gist.github.com/mumoc/55dce225244fb02363e2

于 2015-02-11T22:28:49.307 回答
0

为什么不让它成为产品的属性呢?每次您想要更改产品时,按照您的方式进行操作都需要重新启动服务器并更改代码。

我只是在产品描述中添加了一个复选框以检查产品何时会出现,并为模型添加了一个范围,scope :featured, lambda { |*args| { :conditions => { :featured => true }, :limit => args.first || 6, :order => "RAND()" } }您可以随意选中和取消选中。

于 2013-10-09T00:19:22.563 回答