Добрый вечер, у меня задача не ординарная, мне нужно сделать ограничение на вместительность корзины, а именно - максимум ОДИН товар, в настройках порылся, ничего подобного не нашёл, может кто знает, может в настройках и нет поди такого, а решается правкой кода, или что нибудь подобное, наведите пожалуйста на путь. Спасибо!
Комментарии
http://drupal.org/node/1128176
Большое спасибо, благодаря вашей ссылке, нашёл красивый текст для гугла, и вышел на пост на офф. сайте (http://www.drupalcommerce.org/discussions/3234/force-1-product-cart-and-...)
где взял правило
"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) его, таким образом теперь при добавлении товар в корзину, он успешно добавляется, при следующем добавлении в корзину любого другого товара, предыдущий просто удаляется и заменяется новым
только не забудьте в Ваше правило впихнуть заодно и оповещение для пользователя, поясняя специфику Вашего сайта. А то будет думать гадать, куда же его товары делись.
Ага, вот только разберусь как вообще устроен модуль Rules (он для меня до сих пор ещё тёмная лошадка, не дошёл до него), хотя с виду код/правило простейшее, но не понимаю что оно делает =). Надо читать мат часть
Похожая проблема, но мне нужно провести сравнить аналогичные позиции в корзине.
Если есть совпадения, то удалить идентичные позиции, а не чистить всю корзину.
Подскажите пожалуйста как это сделать?
Обсуждаю сам с собой уже месяц эту проблему здесь - http://www.drupal.ru/node/107706
Может быть сделать рулзой - экшненом - Добавления товара в корзину, и проверять циклом по корзине о наличии продукта с тем же ID который добавляется, если есть такой - то не добавлять
http://www.drupalcommerce.org/discussions/3212/rule-checking-shopping-ca...
Благодарю, видел эту инструкцию, но написать правило исходя из нее не удалось. Нет соответствующих полей.
Готово заплатить тому кто напишет это правило, опубликую его, возможно кому нибудь еще пригодится.
Не совсем до конца понимаю, ведь когда пользователь добавляет товар в корзину, а потом добавляет тот же самый, ведь коммерц, просто добавляет к количеству первого - количество второго, т.о. объединяя их
Делаю магазин по продаже видео.
После оплаты появлятеся доступ к видео и ссылка на скачивание файла (реализовано через Commerce File)
Создано следующее правило, которое выставляет значение количества идентичных товаров, при совпадении, равное 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 и настраиваю его, возникает проблема:
Позиции начинают задваиваться, затраиваться, взависисмости от того сколько раз пользователь добавил один и тот же товар в корзину.
А у этого Commerce file с Rules нет интеграции, т.е. нет никаких своих экшенов, кондишнов?
Commerce License, который нужен для Commerce File добавил два правила:
1-е:
"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-е
"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" ] } }
]
}
}