Скачать CSS фрагмент компонента Скачать JS фрагмент компонента
Разработана новая универсальная кнопка для добавления товаров в корзину, которая заменяет стандартную кнопку.
Новая кнопка позволяет:
| Атрибут | Описание | Значения | По умолчанию |
|---|---|---|---|
| data-item-id | ID товара | Число или строка | Обязательный |
| data-item-name | Название товара | Текст | '' |
| data-item-price | Цена товара | Число | 0 |
| data-min | Минимальное количество товара | Число | 0 |
| data-max | Максимальное количество товара | Число | 0 — без ограничения |
| data-step | Шаг изменения количества | Число | 1 |
| data-effect | Включает анимацию при добавлении товара в корзину | 1 — включено, 0 — выключено |
0 |
| data-disabled | Отключает кнопку | 1 — отключено, 0 — включено |
0 |
<div class="cart-action" data-item-id="0000003157" data-item-name="Позиция 1" data-item-price="800" data-effect="1">
<div class="cart-button">
<button type="button" class="cart-add">В корзину</button>
<div class="cart-counter">
<button type="button" class="counter-btn counter-minus" aria-label="Уменьшить количество"></button>
<input type="number" class="counter-value" value="1" min="0" step="1" inputmode="numeric" aria-label="Количество">
<button type="button" class="counter-btn counter-plus" aria-label="Увеличить количество"></button>
</div>
</div>
<div class="status-tip"></div>
</div>
$checkorder = select("modul_order","WHERE `ip` = '$myip' && `id_item` = '".$info[$x]['id_item']."'",__FILE__,__LINE__,"id,amount");
$btn_text_status = '';
$counter_value = '1';
if (strlen($checkorder['id'])>0) {
$btn_text_status = 'in-cart';
$counter_value = $checkorder['amount'];
}
if ($info[$x]['amount'] < 1) {
$btn_text_status = '';
$btn_text_status = 'disabled';
}
print '
<div class="cart-action '.$btn_text_status.'" data-item-id="'.$info[$x]['id_item'].'" data-item-name="'.$info[$x]['name'].'" data-item-price="'.$price.'" data-effect="1" data-max="'.$info[$x]['amount'].'">
<div class="cart-button">
<button type="button" class="cart-add">В корзину</button>
<div class="cart-counter">
<button type="button" class="counter-btn counter-minus" aria-label="Уменьшить количество"></button>
<input type="number" class="counter-value" value="'.$counter_value.'" min="0" step="1" inputmode="numeric" aria-label="Количество">
<button type="button" class="counter-btn counter-plus" aria-label="Увеличить количество"></button>
</div>
</div>
<div class="status-tip"></div>
</div>
';
if ($_POST["type"] == "setbutton") {
$amount_save = max(0, (int)($_POST['amount'] ?? 0));
$id_item = $_POST['id_item'] ?? '';
$select_item = select("modul_catalog_store_1c", "WHERE `id_item` = '".$id_item."'", __FILE__, __LINE__);
if (!$select_item || !isset($select_item['amount'])) {
http_response_code(404);
echo json_encode(['success' => false, 'error' => 'Товар не найден'], JSON_UNESCAPED_UNICODE);
exit;
}
$amount_save = min($amount_save, max(0, (int)$select_item['amount']));
$select_order = select("modul_".$modules, "WHERE `id_item` = '".$id_item."' AND `details` = '".$details."' AND `ip` = '".$myip."'", __FILE__, __LINE__);
$price_save = $select_order ? (float)$select_order['price'] : (float)($_POST['price'] ?? 0);
if ($amount_save <= 0) {
delete("modul_".$modules, "WHERE `id_item` = '".$id_item."' AND `details` = '".$details."' AND `ip` = '".$myip."'", __FILE__, __LINE__);
$amount_save = 0;
$item_total = 0;
} elseif ($select_order) {
update("modul_".$modules, "SET `amount` = '".$amount_save."' WHERE `id_item` = '".$id_item."' AND `details` = '".$details."' AND `ip` = '".$myip."'", __FILE__, __LINE__);
$item_total = $price_save * $amount_save;
} else {
insert("modul_".$modules, "(`ip`, `id_item`, `amount`, `price`, `details`, `time`, `name`) VALUES ('".$myip."', '".$id_item."', '".$amount_save."', '".$price_save."', '".$details."', '".time()."', '".$select_item['name']."')", __FILE__, __LINE__);
$item_total = $price_save * $amount_save;
}
$orders = selectlist("modul_".$modules, "WHERE `ip` = '".$myip."'", __FILE__, __LINE__);
$allprice = 0;
$amount = 0;
$col = 0;
$saving_all = 0;
foreach ($orders as $order) {
$order_amount = max(0, (int)$order['amount']);
if ($order_amount <= 0) continue;
$info_item = select("modul_catalog_store_1c", "WHERE `id_item` = '".$order['id_item']."'", __FILE__, __LINE__);
if (!$info_item || (int)$info_item['amount'] <= 0) continue;
$amount += $order_amount;
$allprice += (float)$order['price'] * $order_amount;
$oldprice = (float)($info_item['oldprice'] ?? 0);
$current_price = (float)($info_item['price'] ?? 0);
if ($oldprice > $current_price && $current_price > 0) $saving_all += ($oldprice - $current_price) * $order_amount;
$col++;
}
echo json_encode([
'success' => true,
'id' => (string)$id_item,
'amount' => $amount_save,
'item_total' => number_format($item_total, 0, '.', ' '),
'cart_total' => number_format($allprice, 0, '.', ' '),
'saving' => number_format($saving_all, 0, '.', ' '),
'cart_amount' => $amount,
'cart_count' => $col
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
exit;
}