Не так давно появился модуль Конверсии позволяющий показывать отчеты по тому сколько целевых действий на вашем сайте сделали пользователи.
Но увы этот модуль в базовой поставке знает только модули "Реклама, баннеры", "Блоги", "Форум", "Интернет-магазин".
Ну, а если нам это не интересно? А если у нас на сайте есть другие целевые действия которые мы хотим отлавливать и анализировать?
Давайте сделаем свои счетчики конверсии.
Для этого нам надо сделать ряд не сложных действий:
Создать свой модуль в папке /bitrix/modules/.
Например сделаем модуль для подсчета количества отправленных телефонов с формы обратной связи. Назовем его просто phone
Базовая структура файлов у нас будет такой:
/phone/
/phone/install/index.php
/phone/install/version.php
/phone/lang/ru/install/index.php
/phone/lib/
/phone/include.php
Стандартная структура модуля, с самым стандартным содержимым.
Модуль положили в папку /bitrix/modules.
Написать свои обработчики событий.
В папке /phone/lib/ создадим к примеру папку internals/ и в ней файл с нашим классом phoneconversion.php
В этом файле мы опишем класс который будем отвечать за подсчет конверсии.
Первый метод onGetCounterTypes(). Он определяет какие счетчики у нас будут.
Второй метод onGetRateTypes(). Он уже формирует подсчет количества целевых действий и отображение информации о них на странице пульса конверсии.
Зарегистрировать наши методы в модуле конверсии.
Для этого в файле /phone/install/index.php в методе InstallDB() добавим 2 команды:
После этого можно устанавливать наш модуль в панели администратора. Если мы все сделали правильно то на странице настройки модуля конверсии должен появится наш модуль.
Добавить код фиксации целевого действия.
Сам по себе наш модуль не знает где и когда произойдет добавление телефона. Для этого в методе сохранения информации с формы обратной связи нам надо добавить код фиксации целевого действия.
Результатом моей работы стало:
Но увы этот модуль в базовой поставке знает только модули "Реклама, баннеры", "Блоги", "Форум", "Интернет-магазин".
Ну, а если нам это не интересно? А если у нас на сайте есть другие целевые действия которые мы хотим отлавливать и анализировать?
Давайте сделаем свои счетчики конверсии.
Для этого нам надо сделать ряд не сложных действий:
Создать свой модуль в папке /bitrix/modules/.
На момент написания данной статьи есть одно существенное ограничение. Модуль конверсий может подключить к себе только модули которые лежат в папке /bitrix/modules/ и только модули в имени которых нет ни точек ни каких либо других символов. (Соответствующее обращение уже отправлено в саппорт, обещают поправить) |
Например сделаем модуль для подсчета количества отправленных телефонов с формы обратной связи. Назовем его просто phone
Базовая структура файлов у нас будет такой:
/phone/
/phone/install/index.php
/phone/install/version.php
/phone/lang/ru/install/index.php
/phone/lib/
/phone/include.php
Стандартная структура модуля, с самым стандартным содержимым.
Модуль положили в папку /bitrix/modules.
Написать свои обработчики событий.
В папке /phone/lib/ создадим к примеру папку internals/ и в ней файл с нашим классом phoneconversion.php
В этом файле мы опишем класс который будем отвечать за подсчет конверсии.
Первый метод onGetCounterTypes(). Он определяет какие счетчики у нас будут.
public static function onGetCounterTypes() { return array( 'phone_add' => array('MODULE' => 'phone', 'NAME' => 'Количество телефонов да все время'), 'phone_add_day' => array('MODULE' => 'phone', 'GROUP' => 'day', 'NAME' => 'Количество телефонов за день') ); } |
public static function onGetRateTypes() { $scale = array(0.5, 1, 1.5, 2, 5); return array( 'phone_add' => array( 'NAME' => 'Количество телефонов', 'SCALE' => $scale, 'MODULE' => 'phone', 'SORT' => 6000, 'COUNTERS' => array('conversion_visit_day', 'phone_add', 'phone_add_day'), 'CALCULATE' => function(array $counters) { $denominator = $counters['conversion_visit_day'] ?: 0; $numerator = $counters['phone_add_day'] ?: 0; $quantity = $counters['phone_add'] ?: 0; return array( 'DENOMINATOR' => $denominator, 'NUMERATOR' => $numerator, 'QUANTITY' => $quantity, 'RATE' => $denominator ? $numerator / $denominator : 0, ); }, ), ); } |
Зарегистрировать наши методы в модуле конверсии.
Для этого в файле /phone/install/index.php в методе InstallDB() добавим 2 команды:
RegisterModuleDependences('conversion', 'OnGetCounterTypes' , 'phone', '\Phone\Internals\PhoneConversion', 'onGetCounterTypes'); RegisterModuleDependences('conversion', 'OnGetRateTypes' , 'phone', '\Phone\Internals\PhoneConversion', 'onGetRateTypes'); |
Добавить код фиксации целевого действия.
Сам по себе наш модуль не знает где и когда произойдет добавление телефона. Для этого в методе сохранения информации с формы обратной связи нам надо добавить код фиксации целевого действия.
$context = \Bitrix\Conversion\DayContext::getInstance(); $context->addDayCounter('phone_add_day', 1); $context->addCounter('phone_add', 1); |