Веселье без кассы

Я использую Spree 2.0.4 на Rails 3.2.14. Я хочу создать сайт электронной коммерции, но на нем не должно быть функции оформления заказа. Сайт электронной коммерции без оформления заказа не имеет особого смысла, но по сути это модель B2B, поэтому розничных продаж не будет. Я ознакомился с документацией, и в ней показаны шаги по настройке процесса оформления заказа, но это все равно не ясно, как удалить эту функцию полностью. Мое требование состоит в том, чтобы

  1. Нет отображения цены на внешнем интерфейсе
  2. Нет Добавить в корзину или выбрать количество

Я хотел бы использовать Spree из-за его модулей управления запасами и UX, которые помогут мне быстро приступить к работе.


person pr4n    schedule 04.09.2013    source источник


Ответы (2)


Не существует короткого способа сделать это, но самый простой способ — просто избавиться от любой ссылки на проверку и количество во внешнем интерфейсе. Вы можете сделать это, переопределив представления, которые ссылаются на них, полностью или используя дефейс (дефейс более рекомендуется, но это также требует времени, чтобы изучить), и просто удалив любое поле количества, ценник, ссылку для добавления в корзину или оформления заказа.

Тем не менее, поработав со Spree уже довольно давно, я бы посоветовал разветвить проект spree с github и выборочно удалить ненужные вам функции, как во внешнем интерфейсе, так и во внутреннем движке, и в основном движке. Хотя это потребует дополнительных усилий.

person Miotsu    schedule 04.09.2013

Я не использовал версии 2.x, но я просмотрел их, и этого должно быть достаточно, чтобы переопределить show.html.erb для продуктов с Deface:

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, и я не могу этого сделать сейчас, я вижу, что они разделили frontend и backend, поэтому пути может быть 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.

person zrl3dx    schedule 05.09.2013