События для маркетинговых систем
Шаблон данных "Маркетинговые системы: события" предназначен для создания, редактирования, включения и отключения регистрации событий при работе с сайтом.
Эти события вызываются в коде явно и добавление новых событий требует внедрения разработчиком кода регистрации и/или инициализации события на сайте.
Список событий находится в админ. панели сайта в разделе "Маркетинговые системы / События" (см. рис. 1)
Шаблон данных "Маркетинговые системы: события" содержит такие поля
Название | Описание |
---|---|
Название | Название события |
Системное имя | Системный идентификатор события который используется для регистрации, а также инициализации события в исходном коде сайте |
Включить | Определяет то что, событие будет отрабатывать на сайте. Если отключить то все Обработчики событий связанные с этим событием не будут работать |
Динамическое событие | Если событие сделать статичным то такое событие будет инициализироваться только на этапе загрузки страницы (см. пункт статическая инициализация событий), иначе его можно будет использовать только инициализацией события динамически через Javascript функцию (см. пункт динамическая инициализация событий) |
Таблица доступных событий на сайте
Название | Системное имя | Тип | Описание |
---|---|---|---|
Добавление первого товара в корзину | cart_creation | Динамическое | Срабатывает когда пользователь добавляет первый товар в корзину (фактически создает её) |
Добавление товара в корзину | cart_product_add | Динамическое | Срабатывает когда пользователь добавляет любой товар в корзину |
Изменение товара в корзине | cart_product_update | Динамическое | Срабатывает когда пользователь изменяет товар в корзине (например меняет его количество) |
Удаление товара из корзины | cart_product_remove | Динамическое | Срабатывает когда пользователь удаляет товар из корзины |
Посещение страницы каталога | visit_catalog_page | Статическое | Срабатывает когда пользователь заходит на страницу каталога |
Посещение страницы товара | visit_product_page | Статическое | Срабатывает когда пользователь заходит на страницу товара |
Посещение страницы поиска | visit_search_page | Статическое | Срабатывает когда пользователь заходит на страницу поиска |
Посещение страницы с ошибкой 404 | visit_404_page | Статическое | Срабатывает когда пользователь заходит на несуществующую страницу |
Быстрый поиск | quick_search | Динамическое | Срабатывает когда пользователь использует быстрый поиск |
Начало оформления заказа | checkout_begin | Статическое | Срабатывает когда пользователь заходит на страницу оформления заказа |
Успешное оформление заказа | checkout_success | Статическое | Срабатывает когда пользователь оформляет заказ |
Подписка на рассылку | newsletter_subscription | Динамическое | Срабатывает когда пользователь оформляет подписку на рассылку |
Запрос обратного звонка | callback_submit | Динамическое | Срабатывает когда пользователь делает запрос на обратный звонок |
Статическая инициализация события
Для статической инициализации события необходимо в РНР коде перед рендерингом страницы зарегистрировать событие
<?php use horoshop\marketing\MarketingCreator; class SomeController { // ... public function someRenderAction() { // .. some init code MarketingCreator::getMarketingInstance()->setGlobalEventId('event_system_name'); // Обязательный параметр MarketingCreator::getMarketingInstance()->setGlobalEventValidatorKey('some unique value for action that required');// Опционально для запрета регистрации одинаковых событий (например оформления заказа) MarketingCreator::getMarketingInstance()->setGlobalEventAttributes(['foo' => 'bar', 'a' => ['b' => 'c']]); // Опционально $this->render('some_view_file'); } // ... }
Смотря на пример кода выше метод setGlobalEventId('event_system_name') указывает что на текущей странице будут выполнены обработчики событий которые ассоциированы с событием event_system_name (системное имя).
Если есть необходимость обработать событие которое должно выполниться один раз (например оформление заказ с уникальным номером заказа) то необходимо вызвать метод setGlobalEventValidatorKey с указанием уникального значения в качестве параметра
Если необходимо в обработчики событий передать какие-то данные то используется метод setGlobalEventAttributes.
Ключи в метках можно передавать с указанием уровней вложенности массива. например
{foo} => echo $attributes['foo'] {a.b} => echo $attributes['a']['b']
Динамическая регистрация событий
Для динамической регистрации событий во время выполнения необходимого действия нужно вызвать Javascript функцию triggerMarketingEvent, например
AjaxCart.getInstance().attachEventHandler('onProductAdd', function (product_id, product_obj) { triggerMarketingEvent('cart_product_add', product_obj); // В обработчике события будут доступны данные которые были переданы в product_obj. // Название переменной внутри обработчика model. // Пояснение product_obj.id будет равносильным model.id внутри обработчика });