Советы PHP-разработчика

Блог содержащий короткие заметки касающиеся программирования для web.

Дополнительная аналитика форм через FormIt в MODX Revolution

Дополнительная аналитика форм через FormIt в MODX Revolution

Недавно столкнулся с необходимостью отправлять в MODX дополнительные данные форм через FormIt, а именно первый рефер и страницу захода. Это оказалось достаточно просто. Теперь к делу.

Сначала необходимо создать плагин. Назовем его analytics-event и добавим код:

if (!isset($_SESSION['firstReferrerPage'])) {
    $_SESSION['firstReferrerPage'] = $_SERVER['HTTP_REFERER'];
}
if (!isset($_SESSION['firstLandingPage'])) {
    $_SESSION['firstLandingPage'] = $_SERVER['REQUEST_URI'];
}

Теперь необходимо добавить выполнение этого кода на событие OnHandleRequest.

Вся необходимая информация будет храниться в сессии. Если хотите, то для этого можно использовать БД или любое другое хранилище данных.

Осталось дело за малым - отправить эти данные в письме. Поэтому создаем сниппет - хук для FormIt (например, analytics) со следующим содержимым:

$hook->setValue('firstReferrerPage', isset($_SESSION['firstReferrerPage']) ? $_SESSION['firstReferrerPage'] : 'Unknown');
$hook->setValue('firstLandingPage', isset($_SESSION['firstLandingPage']) ? $_SESSION['firstLandingPage'] : 'Unknown');
$hook->setValue('currentReferrerPage', $_SERVER['HTTP_REFERER']);
$hook->setValue('currentLandingPage', $_SERVER['REQUEST_URI']);
return true;

Все, что мы делаем в этом сниппете - это устанавливаем сохраненные значения и некоторую другую информацию. К этому списку можно добавить IP-адрес пользователя или что либо еще.

Теперь добавим этот хук в вызов FormIt-а.

[[!FormIt?
   &hooks=`spam,analytics,email`
   ...
]]

Осталось только добавить [[+firstReferrerPage]] и остальные чанки в шаблон сообщения.

На этом все!

  • 2017-01-02 22:36:20