Вы здесь

Покупка пробников товара по другим правилам

0

Здравствуйте.
Есть магазин на Commerce. В нём продаются товары (тип товара один на весь каталог). Настроена правило минимальной суммы заказа - 100$.

Задача: дать возможность посетителям покупать пробники товара.

При этом:
1. Цена пробника всегда равна цене товара (но если будет возможность указывать цену пробника вручную - тоже вариант подходит).
2. Если в корзину помещены только пробники, то минимальная сумма заказа должна быть $10. Соответственно если только товар или товар+пробник, то как и было - минимальная сумма заказа - $100.
3. Возможность покупать пробник должна быть опциональной. То есть включаться вручную у конкретных товаров, а не быть по умолчанию у всех.

=====

Я думал поступить следующим образом:
1. Сделать у товара новое поле-чекбокс "Пробник".
2. Сделать у дисплея товара поле товара мультполя (возможность прикреплять несколько товаров одновременно).
3. В дисплее товара захукать или jquerить виджет переключения между товарами на галочку "Купить только пробник", которая бы переключала товар с первого на второй и обратно. (для красоты и удобства)
4. В правилах настроить что-то похожее: Если все товары помещённые в корзину содержат отмеченное поле "Пробник", то установить минимальную цену товара $10. Если нет - то минимальная $100.

Пока это только план. Третий пункт очень смутно представляю реализацию. Четвёртый пункт - насколько понимаю это должно быть два отдельных правила и пока ещё не знаю, как отловить у товара отмечен чекбокс или нет.

Но вопрос в чём. Может быть есть более простое решение?

Версия Drupal: 
7.x
Вопрос задан 24.04.2016 - 16:21
Аватар пользователя Quty
Quty
27

Честно говоря не очень понятна логика с этими пробниками. Как человек понимает, покупает он пробник или товар?

Комментарий оставлен 27.04.2016 - 14:23

Ответы

0

Сделал в итоге следующим образом:

Создал дополнительный product type "Пробник", повторяющий product type "Товар".
Разрешил к дисплею товара прикреплять оба типа - и Пробник и Товар.
Сделал поле товара у дисплея мультиполем (нужен доп модуль виджета, по умолчанию в комерсе его нет). В итоге к дисплею можно прикреплять как товар, так и товар+пробник или просто пробник.
В правилах настроил подсчёт количества товаров определённого типа (для этого кажется нужны доп модули commerce rules и commerce rules conditions - они у меня и так стояли поэтому не уверен в их обязательности). Настроил два правила так:
а) Если в корзине 1 или более line items являются product type = 'Товар', то минимальная сумма $100.
б) Если в корзине 1 или более line items являются product type = 'Пробник' И 0 line items являются product type = 'Товар' - то минимальная сумма $10.
Работает.

В задаче писал в третьем пункте, что хочу за jquer-ить кнопку покупки пробника. К примеру, чтобы не переключать в селекте product между Товаром и Пробником. А скрыть селект и добавить в дополнение к кнопке "Купить товар" кнопку "Купить пробник" - чтобы они сразу обе были видны. При нажатии на "купить пробник" чтобы происходило незаметно переключение селекта и покупался в итоге именно пробник. Чтобы убрать это лишнее действие переключения. Но это как то костыльно. Наверное можно через темизацию или вьюхи вывести обе кнопки одновременно самим Drupal'ом - но пока решил оставить как есть, просто селект между Товаром и Пробником.

Ответ дан 28.04.2016 - 15:55
Аватар пользователя Quty
Quty
27
0
  1. Правильно
  2. Правильно
  3. Нужно создать словарь таксономии: тип. Добавить ссылку на таксономию в товар. Поставить галку в настройках поля: "Активировать это поле как поле атрибута на форме добавления в корзину" http://joxi.ru/KAxdn7jI406vRA
    Добавить 2 товара к дисплею, каждому из них выбрать в этом поле - пробник это или товар. Сразу после этого на странице дисплея появится поле переключения с товара на товар.
  4. С помощью hook_menu сделать menu callback. При переходе на него проверять условия, которые у вас должны быть. Если условия не подходят, то показывать сообщение или редиректить на страницу с описанием - почему нельзя пройти на чекаут(страницы, видимо должно быть 2: одна для только пробников и одна для товаров+пробников).
    Проверять условие как-то так:
function me_menu() {

  $items['check_page'] = array(
    'title' => 'Check page',
    'page callback' => 'me_check_page',
    'type' => MENU_CALLBACK,
  );

  return $items;
}

function me_check_page(){
  global $user;
  $order = commerce_cart_order_load($user->uid);
  //дальше получаете из $order список товаров и проверяете на ваши условия, после этого редирект на нужную страницу
  drupal_goto('ссылка на нужную страницу');  
}
Ответ дан 27.04.2016 - 15:40
Аватар пользователя shu
shu
136

Спасибо за ответ. Сделал несколько иначе, но из Вашего ответа узнал про возможность поле таксономии выводить в опцию при добавлении в корзину. Очень полезное свойство. Спасибо.

Комментарий оставлен 28.04.2016 - 15:56