1990
24.57
28.43
за сайт
- Проверено Modstore
- Бесплатные будущие обновления
- Работа на тестовом и публичном домене
- 12 месяцев тех. поддержки
Внимание, этот компонент несовместим с MODX 3.
Зависимости:
1. UniversalEventBus
Как пользоваться:
1. Создать копию файла core/components/ecommsender/services/config.inc.php и изменить параметры
* templateIds — содержит массив id шаблонов ключевых страниц (корзина, форма заказа, страница благодарности)
* chunks — содержит массив шаблонов структуры данных для различных событий
* payedStatuses — содержит массив, где ключами являются id способов оплаты, а значениями — id статусов
* paymentKeyParams — содержит массив, где ключами являются id способов оплаты, а значениями — параметр в ссылке на оплату содержащий ключ оплаты
* counterId — id счетчика метрики (актуально только при использовании Яндекс метрики).
* measurementProtocolToken — токен для передачи события purchase в случае невозврата пользователя на сайт
после оплаты (актуально только при использовании Яндекс метрики).
2. Указать путь к вашему файлу конфигурации в системных настройках.
3. Установить код метрики на сайт.
После этого будут доступны следующие события:
* click
* detail
* add
* remove
* view_cart
* initiate_checkout
* order_created
* dl_purchase
* purchase
!!! ВАЖНО!!! События dl_purchase и purchase являются взаимоисключающими,
т.е. если было отправлено одно из них, второе отправлено не будет.
Для отслеживания событий просмотра списка товаров (impressions) необходимо каждому списку добавить следующие атрибуты:
* data-ecs-list
* data-ueb-event=«show»
* data-ueb-once=«1»
Для отслеживания просмотра миникорзины, если она у вас сделана в модальном окне, нужно добавить следующие атрибуты:
* data-ueb-event=«open»
* data-ueb-params=«eventName:ecsViewMiniCart»
И добавить в системные настройки селектор открытой миникорзины.
Для отслеживания открытия окна быстрого заказа нужно добавить следующие атрибуты:
* data-ueb-event=«open»
* data-ueb-params=«eventName:ecsFastOrderWithCart»
И добавить в системные настройки селектор открытого окна быстрого заказа.
Чтобы не отправлять данные о каких-либо событиях, можно просто оставить пустым имя чанка в конфигурации.
Чтобы не отслеживать события, нужно отключить привязку к системным событиям в настройках плагина ecsEventWatcher.
Для отмены отслеживания кликов, оставьте пустым системную настройку с селектором ссылок.
Системные события:
1. OnGetEcsWebConfig — можно добавить свои параметры в веб-конфиг
Для внесения изменений в имеющиеся события (click, detail и т.д.) корректируйте содержимое чанков, предварительно скопировав их.
1. UniversalEventBus
Как пользоваться:
1. Создать копию файла core/components/ecommsender/services/config.inc.php и изменить параметры
* templateIds — содержит массив id шаблонов ключевых страниц (корзина, форма заказа, страница благодарности)
* chunks — содержит массив шаблонов структуры данных для различных событий
* payedStatuses — содержит массив, где ключами являются id способов оплаты, а значениями — id статусов
* paymentKeyParams — содержит массив, где ключами являются id способов оплаты, а значениями — параметр в ссылке на оплату содержащий ключ оплаты
* counterId — id счетчика метрики (актуально только при использовании Яндекс метрики).
* measurementProtocolToken — токен для передачи события purchase в случае невозврата пользователя на сайт
после оплаты (актуально только при использовании Яндекс метрики).
2. Указать путь к вашему файлу конфигурации в системных настройках.
3. Установить код метрики на сайт.
После этого будут доступны следующие события:
* click
* detail
* add
* remove
* view_cart
* initiate_checkout
* order_created
* dl_purchase
* purchase
!!! ВАЖНО!!! События dl_purchase и purchase являются взаимоисключающими,
т.е. если было отправлено одно из них, второе отправлено не будет.
Для отслеживания событий просмотра списка товаров (impressions) необходимо каждому списку добавить следующие атрибуты:
* data-ecs-list
* data-ueb-event=«show»
* data-ueb-once=«1»
Для отслеживания просмотра миникорзины, если она у вас сделана в модальном окне, нужно добавить следующие атрибуты:
* data-ueb-event=«open»
* data-ueb-params=«eventName:ecsViewMiniCart»
И добавить в системные настройки селектор открытой миникорзины.
Для отслеживания открытия окна быстрого заказа нужно добавить следующие атрибуты:
* data-ueb-event=«open»
* data-ueb-params=«eventName:ecsFastOrderWithCart»
И добавить в системные настройки селектор открытого окна быстрого заказа.
Чтобы не отправлять данные о каких-либо событиях, можно просто оставить пустым имя чанка в конфигурации.
Чтобы не отслеживать события, нужно отключить привязку к системным событиям в настройках плагина ecsEventWatcher.
Для отмены отслеживания кликов, оставьте пустым системную настройку с селектором ссылок.
Системные события:
1. OnGetEcsWebConfig — можно добавить свои параметры в веб-конфиг
$object->webConfig['paramName'] = 'paramValue';2. OnGetEcsHandleEvent — для обработки кастомных событий, можно вернуть массив с данными для добавления в dataLayer$object->output = ['eventName' => 'eventName', 'eventData' => 'eventData'];Для внесения изменений в имеющиеся события (click, detail и т.д.) корректируйте содержимое чанков, предварительно скопировав их.
1.4.1-pl
- FIX: событие ecsOnAddToOrder смешивало orderData с сырым $_REQUEST. Поле формы id (на сайтах, где в форме заказа есть скрытые поля товара) затирало id заказа: analytics и флаги add_payment_info/add_shipping_info писались в properties чужого msOrder, и следующие события отклонялись («Event rejected»). Теперь из запроса берётся белый список: receiver, email, phone, payment, delivery, comment, поля msOrderAddress, обязательные поля доставки (ecsOnGetRequires), hashedKeys и ключ конфига orderFormFields для нестандартных полей сайта. id, num, status, cost, properties, user_id, createdon, updatedon и прочие служебные поля заказа из формы не берутся никогда.
- FIX: getFormData падал с TypeError «formData[...].push is not a function» на паре hidden+checkbox с одним именем (agree_pubof, agree_rec) — изменения формы оформления после этого не уходили на шину. Поля собираются как при отправке формы: неотмеченные checkbox/radio не передаются, имена на [] и select-multiple — массивом, для одиночного имени берётся значение последнего отправляемого элемента. Одиночный checkbox без пары теперь передаёт value (раньше массив), снятый — не передаётся.
1.4.0-pl
- FIX: при двух открытых окнах сайта после «Оформить заказ» попап «подождите переключения на страницу оплаты» висел: ответ на заказ лежал в localStorage, общем для вкладок, и переход выполняла вкладка, получившая событие шины, — часто другое окно. Теперь ответ хранится в памяти вкладки, отправившей заказ, переходит только она. Если событие заказа от шины не пришло за 5 с после того, как action.php шины принял его (fallbackRedirectTimeout в ecsConfig), переход выполняется по таймеру. Время работы обработчиков события в эти 5 с не входит.
- CHANGE: какой вкладке пушить событие в dataLayer, решает шина: пушится событие с detail.own (UniversalEventBus >= 1.4.0-rc). Метка event_page, ecsConfig.pageId и фильтр по event_url убраны — события рендера страницы шина сама адресует по id страницы. С более старой шиной пушатся все события, как до 1.3.1.
- Требуется UniversalEventBus >= 1.4.0-rc.
1.3.1-pl
- FIX: событие, рождённое рендером страницы (view_item, page_view, view_cart, begin_checkout, dl_purchase), пушилось в dataLayer той вкладки, которая читала поток шины, — даже если там открыта другая страница. Фильтр по event_url в ecommsender.js не работал: сервер это поле не ставил. Теперь такие пуши получают event_page — метку загрузки страницы (одна на PHP-запрос, передаётся во фронт как ecsConfig.pageId), и чужая вкладка их пропускает.
- FIX: при второй открытой вкладке view_item карточки не попадал в dataLayer новой вкладки. Пуши из дочитанных шиной событий (eventbus:replay, UniversalEventBus >= 1.3.6-rc) берутся, только если event_page совпадает с этой страницей. С более старой шиной работает только первый фикс.
1.3.0-pl
- FEATURE: Measurement Protocol — чанк (или плагин OnSendEventByMeasurementProtocol) может вернуть список хитов [{...}, {...}]: каждый уходит отдельным запросом по порядку, пустые пропускаются. Пример — Метрика при оплате при получении: сначала pageview (открывает новый визит с тем же ClientID), затем purchase. Объект параметров отправляется как раньше — одним запросом.
- FEATURE: ответ сервера на каждый MP-хит пишется в mxLogger (теги ecommsender,protocol): HTTP-код и тело. Отказ хита (код не 200 или ошибка curl) — уровень error, виден при любом ecs_log_level; сам хит и ответ 200 — уровень info. Сбой одного хита не прерывает отправку остальных и обработку события. Токен ms в логе маскируется.
- FEATURE: таймаут MP-запроса — ключ measurementProtocol.timeout конфига (по умолчанию 5 с, соединение — до 3 с) вместо 60/20 с: хит не задерживает оформление заказа и смену статуса.
- SECURITY: токен MP убран из дефолтного конфига services/config.inc.php (measurementProtocol.token и measurementProtocolToken пустые). Сайтам, которые работают на дефолтном конфиге (ecs_config_path не задан), перед обновлением: скопировать конфиг, указать путь к копии в ecs_config_path и задать токен там — иначе MP-хиты уйдут с пустым ms.
1.2.0-pl
- FIX: плагин ecsEventWatcher на msOnAddToCart/msOnChangeInCart/msOnRemoveFromCart ставится с приоритетом 10 — после скидочных плагинов; add_to_cart больше не уходит с ценой до скидки.
- FEATURE: событие ecsOnBeforeHashUserData перед хешированием контактов: сайт может дополнить userData/orderData через returnedValues (например, дописать код страны к телефону из формы чекаута).
- FIX: телефон перед хешированием приводится к цифрам (E.164 без «+», пробелов и скобок) — хеш совпадает с тем, что ждут Google/Meta, и одинаков на чекауте и в покупке.
- FIX: повторное событие заказа (двойная смена статуса, параллельные запросы) больше не отправляет второй purchase: флаг заказа захватывается атомарно (GET_LOCK + перечитывание properties заказа) до формирования событий.
- FIX: Measurement Protocol — строка хита кодируется по RFC3986 (пробелы %20, а не «+»), амперсанды и тильды в названиях не ломают параметры.
- FEATURE: каждый пуш получает event_uid и event_time; ecommsender.js отбрасывает уже показанные (sessionStorage) и устаревшие (старше 30 минут) пуши — дубли из очереди событий при перезагрузке/новой вкладке не попадают в dataLayer.
1.1.1-rc
- FIX: add_shipping_info не отправлялся никогда. deliveryId писался в сессию при любом изменении формы заказа: первое же касание поля (обязательные поля ещё пустые, checkDelivery() = false) фиксировало id, и все последующие изменения отбивались уже по совпадению id с сессией. Теперь сессия запоминает доставку только когда событие реально сформировано. Сброс сессии в loadJS() (перезагрузка страницы) картину не менял — цикл повторялся с первого же изменения поля.
- FIX: плагин ecsEventWatcher не был подписан на msOnCreateOrder — событие order_created не срабатывало, заказу не проставлялись properties.analytics, и purchase уходил без идентификаторов пользователя (client_id, gclid, utm). Подписка добавлена.
1.1.0-rc
- FEATURE: новое системное событие ecsOnGetRequires (параметры: deliveryId, requires, object) — сайт может подменить список обязательных полей, по заполненности которых eCommSender решает, что шаг доставки завершён и пора слать add_shipping_info. Нужно, когда обязательность полей заказа реализована не через msDelivery.requires (например, кастомной конфигурацией per context). Возврат — returnedValues['requires'].
- FIX: у доставки с пустым msDelivery.requires explode давал [''] — одно «обязательное» пустое поле, из-за которого add_shipping_info не отправлялся никогда. Теперь пустой requires (после array_filter) означает «полей-условий нет» — событие уходит по факту выбора доставки (если слушатель ecsOnGetRequires не задал свой список).
1.0.5-rc
- FIX: шквал change-событий формы заказа (быстрый ввод / автозаполнение чекаута) схлопывается в один запрос — отправка addToOrder через debounce (параметр JS-конфига addToOrderDebounce, по умолчанию 400 мс). Раньше каждый change порождал отдельный fetch, на чекауте копились одновременные запросы.
1.0.4-rc
- Логирование переведено с файлов (assets/logs/*.txt) на mxLogger. Logger делегирует записи сервису mxLogger (если установлен), иначе молчит и один раз предупреждает в журнале MODX. Перевод затронул eCommSender и Request.
- Гейты: ecs_debug (вкл/выкл) + новая настройка ecs_log_level (минимальный уровень debug|info|warning|error, по умолчанию error; единый приёмник mxLogger, включено из коробки). Консистентно с mxLogger.min_level.
- Тэги: базовые ecommsender + analytics, этапные event (dataLayer-событие), protocol (отправка в measurement protocol), http (CURL). Воронка processuid = «ecommsender»+md5(session_id).
- Сигнатура Logger::write сохранена (позиционные method/msg/data), добавлены $level и $tags. Уровни: отправка событий — info, CURL-детали — debug (ошибка CURL — warning).
- Настройка ecs_log_path больше не используется (файлового лога нет) — оставлена для обратной совместимости.
- ВНИМАНИЕ: перед сборкой настройку ecs_log_level создать в менеджере (namespace ecommsender) — сборка тянет настройки из БД стенда.
1.0.3-rc
- Добавил селектор формы заказа.
1.0.2-rc
- Добавил проверку на массив в hashUserData() перед перебором hashedKeys.
- Исправил получение списка событий measurementProtocol для избежания ошибки при пустом значении.
1.0.1-rc
- Убрал из clickHandler() e.preventDefault().
1.0.0-rc
- Добавил возможность указывать несколько статусов для оплаченных заказов.
- Добавил возможность отключить переопределение submit miniShop2.
- Добавил событие OnSendEventByMeasurementProtocol
- Добавил возможность отправлять события в GTM с сервера по Measurment Protocol
- Перенёс список данных пользователя для хэширования в конфигурацию
1.0.0-beta9
- Мелкие правки.
- Добавил явную передачу контекста в плагин-наблюдатель за событиями.
1.0.0-beta7
- Добавил очистку localstorage при отмене редиректа.
- Добавил проверку на ajax при событии ecsOnLoadWebDocument.
- Добавил событие page_view при просмотре НЕтовара.
- Добавил редирект даже если событие order_created не отслеживается
- Добавил опциональную цепочку при доступе к e.detail?.data?.pushed
1.0.0-beta6
- Переместил создание экземпляра класса eCommSender из обработчика события DOMContentLoaded.
1.0.0-beta5
- Сделал вызов редиректа постоянным.
1.0.0-beta4
- Поменял имя события для обработки данных возвращаемых из события.
- Поменял порядок формирования данных в плагине подготовки ответа.
1.0.0-beta3
- Добавил проверку наличия файла конфигураци.
- Добавил события JS 'ecommsender:click' и 'ecommsender:getlistdata'
- Уточнил данные зааписываемые в localstorage responseOrder
1.0.0-beta2
- Добавил в конфигурацию параметр clientIdKey для передачи ключа клиента.
- Добавил в конфигурацию параметр savedCookiesOnCreatingOrder для передачи ключей кук которые необходимо записать в свойства заказа.
1.0.0-beta
- Первая сборка.




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