Skip to content
  1. Компоненты
  2. BannerPro
  3. Интеграции
  4. Внешняя аналитика

Внешняя аналитика

BannerPro вызывает серверные события MODX и браузерные события для кликов и показов. Плагин BannerProAnalytics отправляет эти события в GA4, Matomo и Яндекс Метрику.

Что включено в ядро

УровеньСобытиеКогда срабатывает
MODXOnBannerProClickПеред перенаправлением после клика
MODXOnBannerProImpressionПосле pixel-запроса показа
Browserbannerpro:clickПри клике по ссылке баннера, если загружен analytics.js
Browserbannerpro:impressionПри показе баннера, если включён impression.js

Серверные события работают без BannerProAnalytics.

Плагин BannerProAnalytics

Плагин выключен по умолчанию. Для включения:

  1. Откройте Элементы → Плагины.
  2. Включите BannerProAnalytics.
  3. В системных настройках включите bannerpro_analytics_enabled.
  4. Убедитесь, что на странице уже есть GA4/GTM, Matomo или Яндекс Метрика.

Плагин подключает assets/components/bannerpro/js/analytics.js на событии OnLoadWebDocument.

Настройки

КлючПо умолчаниюРоль
bannerpro_analytics_enabledfalseПодключает клиентский мост
bannerpro_analytics_ga4trueВключает dataLayer.push
bannerpro_analytics_ga4_clickbannerpro_clickИмя события клика GA4
bannerpro_analytics_ga4_impressionbannerpro_impressionИмя события показа GA4
bannerpro_analytics_matomotrueВключает _paq.push(['trackEvent', ...])
bannerpro_analytics_ym_counterпустоID счётчика Метрики
bannerpro_analytics_ym_click_goalbannerpro_clickЦель клика в Метрике
bannerpro_analytics_ym_impression_goalbannerpro_impressionЦель показа в Метрике

Что отправляется

СистемаКликПоказ
GA4 / GTMdataLayer.push({ event: 'bannerpro_click', ... })event: 'bannerpro_impression'
Matomo_paq.push(['trackEvent', 'BannerPro', 'click', ...])action = impression
Яндекс Метрикаym(ID, 'reachGoal', 'bannerpro_click', params)bannerpro_impression

Для GA4 через GTM создайте триггеры на события bannerpro_click и bannerpro_impression.

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

КлючЧто содержит
ad_idID баннера
ad_nameНазвание
ad_urlURL перехода
ad_typeimage или html
product_idID товара MiniShop3 или 0
positionID позиции
position_nameИмя позиции
adpositionID связи баннер + позиция
ipIP посетителя, только сервер
recordedЗапись создана в БД
duplicateДубликат за сутки
referrerHTTP Referer, только клик
redirect_urlURL после обработки чанка, только клик

Свой браузерный обработчик

javascript
document.addEventListener('bannerpro:impression', function (event) {
  console.log(event.detail)
})

Если analytics.js загрузился после impression.js, показы попадают в window.bannerproImpressionQueue и обрабатываются при инициализации моста без двойного учёта в GA4/Matomo/Метрике.

QA без реальных счётчиков

Демо-страница: ресурс bannerpro-test.html, шаблон core/elements/templates/demo/bannerpro_test.tpl, секция 19.

Подготовка из корня MODX:

bash
php core/elements/demo/seed_bannerpro_demo.php
php clear_cache.php

Сидер включает bannerpro_analytics_enabled=1, плагин BannerProAnalytics, демо-позиции и баннеры.

На стенде подключаются analytics-mock.js (заглушки dataLayer, _paq, ym()) и analytics.js. Кнопки Симулировать показ/клик вызывают bannerproAnalytics.trackImpression/Click.

Внимание

На демо-странице шаблон может подключать analytics.js даже при выключенном плагине (пометка «стенд»). На продакшене используйте только плагин + bannerpro_analytics_enabled.

Ловушка Fenom {extends}

Если демо-шаблон наследует layout через {extends 'layout.tpl'}, убедитесь, что блок с баннерами не перекрывается родительским шаблоном. Иначе события аналитики не сработают на видимых баннерах.

Свой серверный плагин

Создайте плагин MODX и подпишите его на OnBannerProClick или OnBannerProImpression.

php
if ($modx->event->name === 'OnBannerProClick') {
    $modx->log(modX::LOG_LEVEL_INFO, 'Banner click: ' . $scriptProperties['ad_name']);
}

Webhook как альтернатива

Для внешней аналитики без клиентских счётчиков настройте webhook при клике и показе. Сервер отправит POST JSON на ваш URL.

Диагностика

СимптомЧто проверить
analytics.js не подключилсяПлагин BannerProAnalytics, bannerpro_analytics_enabled, контекст web
GA4 не получает событиеНа странице есть dataLayer, имя события совпадает с GTM-триггером
Matomo не получает событиеНа странице есть _paq
Метрика не получает цельbannerpro_analytics_ym_counter и цель JavaScript-события
Показы не приходятbannerpro_track_impressions, BannerProImpression, баннер в области видимости