Создание события и подписка на него. Обновить корзину.
Рассмотрим на примере малой корзины.
В файле local/templates/ваш_шаблон/components/bitrix/sale.basket.basket.line/cart/top_template.php
Создаем событие на обновление корзины. И результат (список всех товаров в корзине и т.д.) передаем вторым аргументом.
BX.ready(function () {
BX.onCustomEvent('OnBasketRefresh', <?=\Bitrix\Main\Web\Json::encode($arResult)?>);
})
Теперь нам нужно вывести эти товары где-то в другом месте (например, в модальном окне.)
В нужном месте вставляем
BX.addCustomEvent('OnBasketRefresh', function (result) {
if(result.data.CATEGORIES.hasOwnProperty('READY')) {
let products = result.data.CATEGORIES.READY
console.log(products)
}
})
Обновить количество товаров в корзине
// Обработчик события 'OnBasketRefresh' для отображения количества товаров.
// Создаем событие в шаблоне малой корзины.
BX.addCustomEvent('OnBasketRefresh', function (result) {
if (result.data.NUM_PRODUCTS) {
let smallCartQty = document.querySelectorAll('[data-cart-qty]')
if (smallCartQty.length > 0) {
smallCartQty.forEach(qty => {
qty.textContent = result.data.NUM_PRODUCTS
})
}
}
})
Пересчитать корзину
BX.onCustomEvent('OnBasketChange');
Получение списка всех событий в системе
В файле /bitrix/js/main/core/core.js
.
Старый вариант
находим: BX.onCustomEvent(eventObject, eventName, arEventParams, secureParams);
Вставим в его исполнение логирование:
console.log(eventName, arEventParams);
Новый вариант
value: function emit(eventName, event) {
console.log(eventName, event);
EventEmitter.emit(this, eventName, event);
return this;
}
После этого при совершении различных действий на клиенте (клики, push-информации, открытии popup) в лог будут писаться коды событий. Вам останется подобрать нужное.
Добавить обработчик на мое событие
BX.addCustomEvent('onMyEvent',function () {
Вызываем событие.
BX.fireEvent(BX('elementId'),'change');
BX.onCustomEvent('onMyEvent');
© LazarovStudio 2017 - 20252022>
Есть что-то, что не любит ограждений ©