【问题标题】:Spree gem without checkout无需结帐的大礼包
【发布时间】:2013-09-04 19:46:44
【问题描述】:

我在 Rails 3.2.14 上使用 Spree 2.0.4。我想建立一个电子商务网站,但它不应该有结帐功能。没有结帐的电子商务网站没有多大意义,但它本质上是一种 B2B 模式,因此不会发生零售销售。我已通读documentation,它显示了自定义结帐流程的步骤,但仍不清楚如何完全删除此功能。我的要求是

  1. 前端无价格显示
  2. 没有添加到购物车或数量选项

我想使用 Spree,因为它的库存管理和 UX 模块可以帮助我快速启动和运行。

【问题讨论】:

    标签: ruby-on-rails checkout spree


    【解决方案1】:

    没有捷径可以做到这一点,但最简单的方法是在前端去掉任何对结帐和数量的引用。 您可以完全覆盖引用它们的视图,也可以使用 deface(更推荐 deface,但也需要时间学习),并且只需删除任何数量字段、价格标签、添加到购物车或结帐链接。

    但是,在与 Spree 合作了一段时间后,我个人的建议是从 github 分叉 spree 项目,并有选择地删除您不想要的功能,包括前端、后端和核心引擎.不过,这需要一些额外的努力。

    【讨论】:

      【解决方案2】:

      我没有使用过2.x 版本,但我已经看过了,它应该足以覆盖带有 Deface 的产品的show.html.erb

      app/overrides/products/show.rb:

       Deface::Override.new(
         virtual_path: 'spree/products/show',
         name: 'Remove cart',
         remove: '[data-hook="cart_form"]')
      

      产品索引也是如此。

      app/overrides/shared/_products.rb:

       Deface::Override.new(
         virtual_path: 'spree/shared/_products',
         name: 'Remove price from products index',
         remove: "[erb-loud]:contains('display_price(product)')")
      

      请注意,根据我对 1.3 版本的经验,我在上面写的内容没有经过测试,我没有安装任何 Spree 2.x 版本,我现在不能这样做,我看到他们已经分裂 frontendbackend,所以路径可能是spree/frontend/app/views/spree/shared_products 而不是上面的,但我对此表示怀疑。

      这当然只会在视觉上删除它,您也可以尝试使用 Product 类,例如覆盖一些基本方法,例如:

      Spree::Product.class_eval do
        def on_sale?
          false
        end
      end
      

      但同样,这是基于 1.3 的,我只是在向您指出从哪里看,因为自 1.3 以来它可能已经发生了很大变化。

      如果你想摆脱结帐选项的所有痕迹,你应该按照@Miotsu 写的那样做,因为你要删除 Spree 的基本功能之一。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-30
        • 2016-06-04
        • 2023-03-23
        • 2012-12-27
        • 1970-01-01
        相关资源
        最近更新 更多