Бесплатно
Загрузите дополнение из админки вашего сайта.
Как загрузить?
Как загрузить?
Внимание, этот компонент несовместим с MODX 3.
Как пользоваться:
1. Создать в админке плагин с любым именем и подключить его к нужным событиям.
2. В JavaScript нужно ловить событие «eventbus» и в обработчике выполнять необходимое действие.
3. Вы можете передавать на сервер информацию о браузерных событиях. Например, для передачи на сервер информации о клике по ссылке
Доступны нестандартные значения для атрибута data-ueb-event:
— close/open — установите его элементам которые должны закрыться/открыться
— show/hide — установите его элементам которые должны появляться/исчезать (например при скролле)
При использовании событий close/open у целевых элементов должны меняться классы отвечающие за показ/скрытие
и эти классы надо перечислить в системных настройках.
В атрибуте data-ueb-params можно указать произвольные параметры, которые будут переданы в событие на сервер.
4. Вы можете добавить обработчик события eventbus:before:send и добавить любые данные для передачи на сервер
Системные события:
— OnUebInit (после инициализации компонента): $EventBus
— OnBeforeUebHandleEvent (перед получением данные и добавления в очередь): $EventBus, $dispatch
— OnUebHandleEvent (после получения данных, но перед добавлением в очередь): $output, $EventBus
— OnUebGetProductsData (получение данных о товаре): $product, $EventBus.
— OnGetUebWebConfig (получение конфигурации фронтенда): $webConfig, $EventBus.
Вы можете отменить добавление события в очередь в плагине: $EventBus->dispatch = false.
Вы можете изменить данные перед отправкой в очередь в плагине: $EventBus->output = [];
Вы можете изменить данные товара в плагине: $EventBus->product = [];
Вы можете изменить конфигурации фронтенда в плагине: $EventBus->webConfig = [];
Вы можете изменить получателя в плагине: $EventBus->branch = 'branch_name';
Вы можете изменить получателя при инициализации: $EventBus = new EventBus($modx, ['branch' => 'branch_name']);
Для того, чтобы в данных была информация о модификациях, нужно передать на сервер id модификации в параметре mid
или опции в параметре options, по которым можно получить модификацию.
1. Создать в админке плагин с любым именем и подключить его к нужным событиям.
use UniversalEventBus\Services\EventBus;
$basePath = $modx->getOption('base_path', null, $_SERVER['DOCUMENT_ROOT'] . '/');
require_once $basePath . 'core/components/universaleventbus/services/vendor/autoload.php';
$eventBus = new EventBus($modx);
$eventBus->sendEvent($modx->event->name);2. В JavaScript нужно ловить событие «eventbus» и в обработчике выполнять необходимое действие.
document.addEventListener('eventbus', (event) => {
console.log(event.detail.data);
});3. Вы можете передавать на сервер информацию о браузерных событиях. Например, для передачи на сервер информации о клике по ссылке
<a href="{$uri}" data-ueb-event="click" data-ueb-once="1" data-ueb-params="rid:{$id};eventName:productClick">{$menutitle}</a>Атрибут data-ueb-once указывает на то, что событие будет отправлено только один раз.Доступны нестандартные значения для атрибута data-ueb-event:
— close/open — установите его элементам которые должны закрыться/открыться
— show/hide — установите его элементам которые должны появляться/исчезать (например при скролле)
При использовании событий close/open у целевых элементов должны меняться классы отвечающие за показ/скрытие
и эти классы надо перечислить в системных настройках.
В атрибуте data-ueb-params можно указать произвольные параметры, которые будут переданы в событие на сервер.
4. Вы можете добавить обработчик события eventbus:before:send и добавить любые данные для передачи на сервер
document.addEventListener('eventbus:before:send', (event) => {
const {target, params} = event.detail;
if(target.id === '#product-1') {
params.append('product_id', 1);
}
});Системные события:
— OnUebInit (после инициализации компонента): $EventBus
— OnBeforeUebHandleEvent (перед получением данные и добавления в очередь): $EventBus, $dispatch
— OnUebHandleEvent (после получения данных, но перед добавлением в очередь): $output, $EventBus
— OnUebGetProductsData (получение данных о товаре): $product, $EventBus.
— OnGetUebWebConfig (получение конфигурации фронтенда): $webConfig, $EventBus.
Вы можете отменить добавление события в очередь в плагине: $EventBus->dispatch = false.
Вы можете изменить данные перед отправкой в очередь в плагине: $EventBus->output = [];
Вы можете изменить данные товара в плагине: $EventBus->product = [];
Вы можете изменить конфигурации фронтенда в плагине: $EventBus->webConfig = [];
Вы можете изменить получателя в плагине: $EventBus->branch = 'branch_name';
Вы можете изменить получателя при инициализации: $EventBus = new EventBus($modx, ['branch' => 'branch_name']);
Для того, чтобы в данных была информация о модификациях, нужно передать на сервер id модификации в параметре mid
или опции в параметре options, по которым можно получить модификацию.
1.2.1-pl
- Добавил возможность явно передать контекст в метод handleEvent().
1.2.0-pl
- Мелкие правки.
1.2.0-beta7
- Изменил логику смены контекста.
- Добавил систему гарантированной доставки сообщений.
- Добавил в ответ при отправке браузерного события информацию о добавлении события в очередь.
- Оптимизировал работу компонент при нескольких открытых вкладках.
- Поменял доступность свойства EventBus::contextCookieName.
1.2.0-beta6
- Поместил создание экземпляра класса EventBus в метод обработчик события DOMContentLoaded.
1.2.0-beta5
- Сделал свойство EventBus::isBot публичным.
1.2.0-beta4
- Исправил ошибку в методе execute() при возврате строки.
- Добавил возможность передавать в менеджер очередей опции при добавлении элемента в очередь.
1.2.0-beta3
- Исправил получение данных о конкретном элементе корзины.
1.2.0-beta2
- Добавил возможность транслитерации полей товара в orderData.
- Изменил обработку открытий и закрытий элементов.
1.2.0-beta
- Добавил возможность транслитерации полей товара в productsData.
- Добавил получение данных модификации при использовании msOptionsPrice2.
1.1.0-beta4
- Мелкие правки.
1.1.0-beta3
- Добавил возможность использовать методы execute() и getSQL().
- Добавил возможность определять страницу по переданному в параметрах uri.
1.1.0-beta2
- Добавил возможность пересылать сообщения между пользователями.
- Добавил возможность программно отправлять события на сервер.
1.1.0-beta
- Добавил отправку браузерных событий на сервер.
1.0.0-beta2
- Добавил ESLint.
- Добавил информацию о корзине.
- Поменял приоритет для события OnLoadWebDocument.
- Убрал любые манипуляции с данными на фронтенде.
1.0.0-beta
- Первая сборка.

Последние обсуждения в сообществе MODX.pro