Проблема, насколько я понял, уже давно интересует некоторых пользователей CS-Cart:
Как сделать, чтоб при добавлении двух и более единиц товара, к которым положен бесплатный товар по промо-акции, добавлялось соответствующее количество бесплатных товаров.
Подобные вопросы были тут и тут, и где-то еще встречал. Идеальный вариант, конечно, был бы в добавлении настройки в акцию типа «добавлять один» VS «добавлять пропорционально количеству».
Пытался поискать, где добавляется этот промо-товар. Вроде бы в app\functions\fn.promotions.php этим заведует функция fn_promotion_apply_cart_rule
и вроде бы это происходит тут:
if ($ids = fn_add_product_to_cart($product_data, $cart, $auth)) { $new_products = array_diff(array_keys($cart['products']), $existing_products); if (!empty($new_products)) { $hash = array_pop($new_products); } else { $hash = key($ids); }$_cproduct = fn_get_cart_product_data($hash, $cart['products'][$hash], true, $cart, $auth, !empty($new_products) ? 0 : $p_data['amount']); if (!empty($_cproduct)) { $cart_products[$hash] = $_cproduct; } }
Но что нужно делать, чтоб добавлялось пропорциональное количество продуктов?
И общий вопрос: все-таки это должен быть общий функционал? Или нужно дополнительный модуль делать, потому что запрос единичный, а большинству это не нужно?