Framework Averin.pro 7.0.0

CSS Framework студии Артемия Аверина

Кнопка добавления в корзину

Версия 4.0.0

Скачать CSS фрагмент компонента Скачать JS фрагмент компонента

Разработана новая универсальная кнопка для добавления товаров в корзину, которая заменяет стандартную кнопку.
Новая кнопка позволяет:

  • добавлять товар в корзину;
  • увеличивать и уменьшать количество товара с помощью кнопок «+» и «−»;
  • вручную указывать необходимое количество товара в числовом поле;
  • быстро корректировать количество товара непосредственно в карточке товара.

Пример

Пример классический

Пример с эффектом

Шаг изменения 5. Максимум 20

Нет в наличии

Атрибуты плагина

Атрибут Описание Значения По умолчанию
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

HTML

<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>

Пример HTML с PHP

$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>
';

Пример backend

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;
}