[РЕШЕНО] Drupal 7 Commerce - Как указать максимально возможное количество товара в корзине?

Главные вкладки

Аватар пользователя andreystrelkov andreystrelkov 15 декабря 2012 в 23:54

Добрый вечер, у меня задача не ординарная, мне нужно сделать ограничение на вместительность корзины, а именно - максимум ОДИН товар, в настройках порылся, ничего подобного не нашёл, может кто знает, может в настройках и нет поди такого, а решается правкой кода, или что нибудь подобное, наведите пожалуйста на путь. Спасибо!

Комментарии

Аватар пользователя andreystrelkov andreystrelkov 16 декабря 2012 в 0:17

Большое спасибо, благодаря вашей ссылке, нашёл красивый текст для гугла, и вышел на пост на офф. сайте (http://www.drupalcommerce.org/discussions/3234/force-1-product-cart-and-...)
где взял правило

{ "rules_empty_cart" : {
    "LABEL" : "Empty cart",
    "PLUGIN" : "reaction rule",
    "REQUIRES" : [ "commerce_cart" ],
    "ON" : [ "commerce_cart_product_prepare" ],
    "DO" : [
      { "commerce_cart_empty" : { "commerce_order" : [ "commerce_order" ] } }
    ]
  }
}

И в модуле Rules импортировал (admin/config/workflow/rules/reaction/import) его, таким образом теперь при добавлении товар в корзину, он успешно добавляется, при следующем добавлении в корзину любого другого товара, предыдущий просто удаляется и заменяется новым

Аватар пользователя dgastudio dgastudio 16 декабря 2012 в 0:19

только не забудьте в Ваше правило впихнуть заодно и оповещение для пользователя, поясняя специфику Вашего сайта. А то будет думать гадать, куда же его товары делись.

Аватар пользователя andreystrelkov andreystrelkov 16 декабря 2012 в 0:28

Ага, вот только разберусь как вообще устроен модуль Rules (он для меня до сих пор ещё тёмная лошадка, не дошёл до него), хотя с виду код/правило простейшее, но не понимаю что оно делает =). Надо читать мат часть Smile

Аватар пользователя Perfectus Perfectus 13 марта 2014 в 23:40

Похожая проблема, но мне нужно провести сравнить аналогичные позиции в корзине.
Если есть совпадения, то удалить идентичные позиции, а не чистить всю корзину.
Подскажите пожалуйста как это сделать?
Обсуждаю сам с собой Smile уже месяц эту проблему здесь - http://www.drupal.ru/node/107706

Аватар пользователя andreystrelkov andreystrelkov 16 марта 2014 в 15:56

Может быть сделать рулзой - экшненом - Добавления товара в корзину, и проверять циклом по корзине о наличии продукта с тем же ID который добавляется, если есть такой - то не добавлять

Аватар пользователя Perfectus Perfectus 5 апреля 2014 в 19:17

Благодарю, видел эту инструкцию, но написать правило исходя из нее не удалось. Нет соответствующих полей.
Готово заплатить тому кто напишет это правило, опубликую его, возможно кому нибудь еще пригодится.

Аватар пользователя andreystrelkov andreystrelkov 5 апреля 2014 в 19:53

Не совсем до конца понимаю, ведь когда пользователь добавляет товар в корзину, а потом добавляет тот же самый, ведь коммерц, просто добавляет к количеству первого - количество второго, т.о. объединяя их

Аватар пользователя Perfectus Perfectus 5 апреля 2014 в 19:56

Делаю магазин по продаже видео.
После оплаты появлятеся доступ к видео и ссылка на скачивание файла (реализовано через Commerce File)
Создано следующее правило, которое выставляет значение количества идентичных товаров, при совпадении, равное 1:

{ "rules_limit_for_products_1" : {
    "LABEL" : "Limit for products = 1",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules", "commerce_cart" ],
    "ON" : { "commerce_cart_product_add" : [] },
    "DO" : [
      { "data_set" : { "data" : [ "commerce-line-item:quantity" ], "value" : "1" } }
    ]
  }
}

В управлении отображением для товаров, в поле Product (Форма добавления в корзину) установлена галка "Объединение подобных позиций: Включено"
После того как пользователь добавляет идентичный уже добавленному в корзину товару, счетчик количества обнуляется на 1. Это мне и нужно.
Но как только я включаю модуль Commerce File и настраиваю его, возникает проблема:
Позиции начинают задваиваться, затраиваться, взависисмости от того сколько раз пользователь добавил один и тот же товар в корзину.

Аватар пользователя Perfectus Perfectus 5 апреля 2014 в 20:48

Commerce License, который нужен для Commerce File добавил два правила:
1-е:

{ "commerce_license_activate_licenses" : {
    "LABEL" : "Activates licenses of an order",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "TAGS" : [ "Commerce License" ],
    "REQUIRES" : [ "commerce_license", "commerce_checkout" ],
    "ON" : { "commerce_checkout_complete" : [] },
    "DO" : [
      { "commerce_license_activate_order_licenses" : { "commerce_order" : [ "commerce-order" ] } }
    ]
  }
}

2-е

{ "commerce_license_activate_licenses" : {
    "LABEL" : "Activates licenses of an order",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "TAGS" : [ "Commerce License" ],
    "REQUIRES" : [ "commerce_license", "commerce_checkout" ],
    "ON" : { "commerce_checkout_complete" : [] },
    "DO" : [
      { "commerce_license_activate_order_licenses" : { "commerce_order" : [ "commerce-order" ] } }
    ]
  }
}