В этой статье мы разберём какие изменения необходимо внести в сайт на системе ModX, чтобы отправить данные в MoreKIT.
Содержание
Настройка отправки формы
Для начала настройки нужно войти в админку сайта.
Создание сниппета
Переходим на вкладку «Элементы», разворачиваем панель «Сниппеты» и нажимаем «Добавить».
В форме добавления сниппета заполняем поля (название — sendMoreKit
):
В код сниппета необходимо вставить следующий код (не забудьте заменить ссылку https://ep.morekit.io/XXXXXXX
на вашу):
<?php if (isset($_SERVER)) { if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) { $realip = current(preg_grep( "/^(10|172\\.16|192\\.168)\\./", array_map('trim', explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])), PREG_GREP_INVERT )); } $realip = $realip?:@$_SERVER['HTTP_CLIENT_IP']?:@$_SERVER['REMOTE_ADDR']?:NULL; } $ip = $realip?:$realip = '0.0.0.0'; //Интеграция с amoCRM MoreKIT $moreUrl = 'https://ep.morekit.io/XXXXXXX'; $postArr = $hook->getValues(); $postArr["USER_IP"] = $ip; $micookie = json_decode($_COOKIE['_mk_si'], true); $pars = array('utm_source', 'utm_medium', 'utm_term', 'utm_content', 'utm_campaign', 'roistat_visit','_ga','_ym_uid'); foreach ($pars as $par) { if (isset($micookie[$par])) { $postArr[$par] = $micookie[$par]; } } $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => http_build_query($postArr), 'timeout' => 1, ) ); $myCurl = curl_init(); curl_setopt($myCurl, CURLOPT_URL, $moreUrl); curl_setopt($myCurl, CURLOPT_FOLLOWLOCATION, TRUE); curl_setopt($myCurl, CURLOPT_POST, TRUE); curl_setopt($myCurl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($myCurl, CURLOPT_POSTFIELDS, json_encode($postArr)); curl_setopt($myCurl, CURLOPT_AUTOREFERER, TRUE); curl_setopt($myCurl, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); $response = curl_exec($myCurl); curl_close($myCurl);
Подключение отправки к форме
Находим где в системе описана форма заявки (обычно она находится в разделах «Шаблоны» или «Чанки»):
[[!AjaxForm? &snippet=`FormIt` &form=`tpl.callback-1` &hooks=`email` &emailSubject=`Оставить заявку` &emailTo=`[[++emailsender]]` &validate=`Имя:required,Email:required,check:required` &validationErrorMessage=`В форме содержатся ошибки!` &successMessage=`Сообщение успешно отправлено` ]]
и добавляем в поле hooks через запятую вызов функции из ранее созданного сниппета:
Теперь при отправке формы она также будет отправлена на процесс в MoreKIT!
Настройка сборки аналитики для отправки скриптом
Чтобы также собирать информацию по аналитическим метрикам (UTM-метки, значения счётчиков Google, Яндекс и Roistat) необходимо добавить ещё один сниппет.
Создаём сниппет
Создаём по аналогии с процессом отправки (название — collectAnalyticsMoreKit
):
Код для вставки:
<?php if (isset($_COOKIE['_mk_si'])) $micookie = json_decode($_COOKIE['_mk_si'], true); else $micookie = array(); $utms = array('utm_source', 'utm_medium', 'utm_term', 'utm_content', 'utm_campaign'); $cookies = array('roistat_visit','_ga','_ym_uid'); foreach($utms as $utm) if (!empty($_GET[$utm])) $micookie[$utm]=$_GET[$utm]; foreach($cookies AS $cookie) if(!empty($_COOKIE[$cookie])) $micookie[$cookie]=$_COOKIE[$cookie]; setcookie('_mk_si',json_encode($micookie),time()+3600*24*365, "/");
Активируем сбор на сайте
Чтобы данные собирались необходимо что сниппет срабатывал на каждой странице.
Для этого можно вставить его в чанк подвала (обычно находится в Чанки > core > footer) или в каждый Шаблон.
В конце шаблона/чанка добавляем строку:
[[!collectAnalyticsMoreKit]]
Теперь при каждой отправке формы к ней будут подключаться данные аналитики, которые прикрепились к пользователи при заходе на сайт.