События для маркетинговых систем

Шаблон данных "Маркетинговые системы: события" предназначен для создания, редактирования, включения и отключения регистрации событий при работе с сайтом.

Эти события вызываются в коде явно и добавление новых событий требует внедрения разработчиком кода регистрации и/или инициализации события на сайте.

Список событий находится в админ. панели сайта в разделе "Маркетинговые системы / События" (см. рис. 1)


Шаблон данных "Маркетинговые системы: события" содержит такие поля

НазваниеОписание
НазваниеНазвание события
Системное имяСистемный идентификатор события который используется для регистрации, а также инициализации события в исходном коде сайте
ВключитьОпределяет то что, событие будет отрабатывать на сайте. Если отключить то все Обработчики событий связанные с этим событием не будут работать
Динамическое событие

Если событие сделать статичным то такое событие будет инициализироваться только на этапе загрузки страницы (см. пункт статическая инициализация событий), иначе его можно будет использовать только инициализацией события динамически через Javascript функцию (см. пункт динамическая инициализация событий)

Таблица доступных событий на сайте

НазваниеСистемное имяТипОписание
Добавление первого товара в корзинуcart_creationДинамическоеСрабатывает когда пользователь добавляет первый товар в корзину (фактически создает её)
Добавление товара в корзинуcart_product_addДинамическоеСрабатывает когда пользователь добавляет любой товар в корзину
Изменение товара в корзинеcart_product_updateДинамическоеСрабатывает когда пользователь изменяет товар в корзине (например меняет его количество)
Удаление товара из корзиныcart_product_removeДинамическоеСрабатывает когда пользователь удаляет товар из корзины
Посещение страницы каталогаvisit_catalog_pageСтатическоеСрабатывает когда пользователь заходит на страницу каталога
Посещение страницы товараvisit_product_pageСтатическоеСрабатывает когда пользователь заходит на страницу товара
Посещение страницы поискаvisit_search_pageСтатическоеСрабатывает когда пользователь заходит на страницу поиска
Посещение страницы с ошибкой 404visit_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 внутри обработчика
});