Назад

Добавление кнопки "Очистить корзину" в Битрикс

Главная
Блог
Добавление кнопки "Очистить корзину" в Битрикс

В стандартных компонентах Битрикс кнопка "Очистить корзину" встречается редко, но есть в некоторых шаблонах.

1. Компонент sale.basket.basket (Аспро и некоторые другие шаблоны)

В некоторых готовых шаблонах (например, Аспро) кнопка уже встроена. Проверьте:

  • Файлы шаблона

    /bitrix/templates/[ваш_шаблон]/components/bitrix/sale.basket.basket/

  • Если её нет, можно добавить вручную (как в предыдущей инструкции).

2. Компонент bitrix:sale.order.ajax (в режиме корзины)

В этом компоненте иногда есть кнопка очистки, но зависит от шаблона.

  • Проверьте настройки компонента в Админке (Настройки → Оформление заказа).

  • В стандартном шаблоне её обычно нет, но можно добавить аналогичным способом.

3. Готовые решения (Маркетплейс Битрикс)

Некоторые модули из Маркетплейса (например, «Улучшенная корзина») добавляют эту функциональность.


Рассмотрим реализацию на примере компонента sale.basket.basket в файле template.php.

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

<form action="" method="POST">
    <button type="submit" class="clear-cart" name="BasketClear">Очистить корзину</button>
</form>

<?
if (isset($_POST["BasketClear"]) && CModule::IncludeModule("sale")) {
    CSaleBasket::DeleteAll(CSaleBasket::GetBasketUserID());
    header("Location: ".$_SERVER['REQUEST_URI']);
}
?>

Важные замечания

  1. Избегайте вложенных форм – кнопка должна быть вне основной формы корзины, иначе могут возникнуть конфликты.

  2. Сброс POST-запроса – после очистки корзины используйте header("Location: ".$_SERVER['REQUEST_URI']), чтобы избежать повторной отправки формы.

Пример корректного размещения кода

<!-- Основная форма корзины -->
<form method="post" action="<?=POST_FORM_ACTION_URI?>" name="basket_form" id="basket_form">
    <div id="basket_form_container">
        <div class="bx_ordercart">
            <? include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/basket_items.php"); ?>
        </div>
    </div>
    <input type="hidden" name="BasketOrder" value="BasketOrder" />
</form>

<!-- Форма кнопки "Очистить корзину" -->
<form action="" method="POST">
    <button type="submit" class="clear-cart" name="BasketClear">Очистить корзину</button>
</form>

<?
if (isset($_POST["BasketClear"]) && CModule::IncludeModule("sale")) {
    CSaleBasket::DeleteAll(CSaleBasket::GetBasketUserID());
    header("Location: ".$_SERVER['REQUEST_URI']);
}
?>

Возможные ошибки и проверка

  • Не работает кнопка "Оформить заказ" – убедитесь, что форма очистки корзины не вложена в основную форму.

  • Двойная отправка POST – всегда делайте редирект после очистки.

Теперь ваша корзина в Битрикс будет удобнее для пользователей!

Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Читайте по теме
Все статьи
Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Все статьи