
BannerPro
BannerPro: баннеры в MODX 3, позиции, UTM, webhook, A/B, REST API, Vue-админка


BannerPro выводит баннеры по позициям через сниппет BannerPro, считает клики по URL /{bannerpro_click}/{adposition} и фиксирует показы через impression.js, если включён учёт. Админка на Vue 3 и PrimeVue через VueTools.
Namespace настроек: bannerpro. Таблицы: bannerpro_ads, bannerpro_positions, bannerpro_ads_positions, bannerpro_clicks, bannerpro_impressions.

| Компонент | Версия | Роль |
|---|---|---|
| MODX Revolution | 3.0+ | Платформа |
| PHP | 8.2+ | Сервер |
| pdoTools | 2.1+ | Выборка и рендер сниппета BannerPro |
| VueTools | актуальная | Vue 3 и PrimeVue в админке |
| MiniShop3 | опционально | Привязка баннера к товару и атрибуция заказа |
| CrawlerDetect | опционально | Фильтр ботов при bannerpro_filter_bots |
sidebar, header, shop-product-sidebar. Вывод по имени или ID.RAND(), idx, weighted, A/B-деление (sortby=ab).show_hours, метки, привязка к ресурсу или родителю, лимиты max_clicks / max_impressions.context_key у позиции. Сниппет фильтрует по текущему контексту MODX.BannerProClickout на OnPageNotFound пишет клик и перенаправляет на URL баннера.bannerpro_track_impressions подключает impression.js и pixel URL.assets/components/bannerpro/api.php. Баннеры, позиции, статистика, audit, шаблоны. Опционально POST/PATCH баннеров.sidebar.BannerPro с positionName=sidebar.bannerclick/{adposition}.{'!BannerPro' | snippet : [
'positionName' => 'sidebar',
'tpl' => 'byAd',
'limit' => 1
]}[[!BannerPro?
&positionName=`sidebar`
&tpl=`byAd`
&limit=`1`
]]| Нужно | Документ |
|---|---|
| Установить и вывести первый баннер | Быстрый старт |
Проверить все ключи bannerpro_* | Системные настройки |
| Разобрать экраны админки | Админка |
| Разобрать кэш, ротацию, клики и показы | Интеграция |
| Посмотреть параметры сниппета | Сниппет BannerPro |
| Выводить баннеры в MiniShop3 | MiniShop3 |
| Отправлять события в GA4, Matomo или Метрику | Внешняя аналитика |
| Связать баннер с формой FormIt | FormIt |
| Подключить REST API | REST API |
| Найти причину пустого вывода | FAQ |