Клиентские события

    Клиентские события

    Данные события вызываются на клиенте, для вызова и перехвата используется jQuery. Все события находятся в пространстве имен commerce.

    При работе с корзиной (это действия add, remove, update, clean) порядок вызова событий следующий:

    1. action-start.commerce
    2. cart-<action>.commerce - в этом событии можно отменить дальнейшие действия
    3. cart-<action>-complete.commerce
    4. action-complete.commerce

    action-start

    Вызывается при любом действии с корзиной, в самом начале обработки.

    Параметры события:

    ПараметрОписание
    actionНазвание действия, например cart/add
    paramsДанные действия. При добавлении в корзину содержат данные товара, тип корзины. При удалении из корзины содержат идентификатор строки. И т.д.
    $(document).on('action-start.commerce', function(e, params) {
        console.log(params.action + ' called with ', params.data);
    });

    action-complete

    Вызывается после того, как действие с корзиной произведено.

    Параметры события:

    ПараметрОписание
    actionНазвание действия, например cart/add
    paramsДанные действия. При добавлении в корзину содержат данные товара, тип корзины. При удалении из корзины содержат идентификатор строки. И т.д.
    responseОтвет сервера

    cart-add

    Вызывается перед добавлением товара в корзину. Позволяет отменить добавление

    Параметры события:

    ПараметрОписание
    paramsПараметры запроса. В зависимости от способа вызова может содержать разные данные. Например, при добавлении товара из формы здесь будут все данные из полей этой формы, а если товар добавляется простой ссылкой с атрибутом data-commerce-action="add", в параметрах будут все data-параметры этой ссылки. Обязательно присутствует только id.

    Стандартные параметры запроса:

    ПараметрОписание
    idИдентификатор добавляемого товара
    countКоличество. Если отсутствует, считается равным 1
    cartОбъект для описания корзины. Содержит значение instance - тип корзины, по умолчанию products

    Пример:

    $(document).on('cart-add.commerce', function(e, params) {
        if (params.cart.instance == 'comparison' && params.id == 53) {
            e.preventDefault();
        }
    });

    cart-add-complete

    Вызывается при обработке ответа сервера на запрос добавления товара

    Параметры события:

    ПараметрОписание
    responseОтвет сервера. Содержит status - результат запроса, success / failed, и row - уникальный идентификатор строки с добавленным товаром в корзине
    dataПараметры запроса, тот же состав, как и в событии cart-add
    $(document).on('cart-add-complete.commerce', function(e, params) {
        if (params.response.status == 'success') {
            $('.product[data-id="' + params.data.id + '"]').addClass('in-cart');
        }
    });

    cart-remove

    Вызывается перед удалением товара из корзины

    cart-remove-complete

    Вызывается при обработке ответа сервера на запрос удаления товара из корзины

    cart-update

    Вызывается перед изменением товара

    cart-update-complete

    Вызывается при обработке ответа сервера на запрос изменения товара

    cart-clean

    Вызывается перед очисткой корзины

    cart-clean-complete

    Вызывается при обработке ответа сервера на запрос очистки корзины

    $(document).on('cart-clean-complete.commerce', function(e) {
        $('.order').remove();
    });

    collect-hashes

    Вызывается при каждом запросе к серверу для сбора хэшей всех корзин на странице, с целью обновления содержимого этих корзин

    cart-reload

    Вызывается перед обновлением содержимого корзины, действие можно отменить

    $(document).on('cart-reload.commerce', function(e) {
        if ($(e.target).hasClass('sidecart')) {
            e.preventDefault();
        }
    });

    cart-reloaded

    Вызывается после обновления содержимого корзины

    $(document).on('cart-reloaded.commerce', function(e) {
        var $cart = $(e.target);
    
        if ($cart.hasClass('minicart')) {
            $cart.addClass('animate');
        }
    });

    carts-reloaded

    Вызывается после обновления всех корзин, но только при прямом вызове метода Commerce.reloadCarts()

    $(document).on('carts-reloaded.commerce', function(e) {
        alert('Все корзины обновлены!');
    });

    order-data-update

    вызывается перед отправкой на сервер данных формы заказа

    order-data-updated

    вызывается после отправки на сервер данных формы заказа