Клієнтські події

    Клієнтські події

    Дані події викликаються на клієнта, для виклику та перехоплення використовується 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

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