Не так давно появился модуль Конверсии позволяющий показывать отчеты по тому сколько целевых действий на вашем сайте сделали пользователи.
Но увы этот модуль в базовой поставке знает только модули "Реклама, баннеры", "Блоги", "Форум", "Интернет-магазин".
Ну, а если нам это не интересно? А если у нас на сайте есть другие целевые действия которые мы хотим отлавливать и анализировать?
Давайте сделаем свои счетчики конверсии.
Для этого нам надо сделать ряд не сложных действий:
Создать свой модуль в папке /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); |





