Откуда пришел лид
        Здравствуйте. Возник вопрос: необходимо, чтобы при получении данных с отправленной формы приходил отчет, откуда пришел посетитель на сайт. Реализовано ли такое дополнение для MODX Revo?    
    
    
                                                                                
            Комментарии: 7
                В рево не знаю.
В метрике настроить цели на работу с формой и потом смотреть, окуда пришел лид.
                    В метрике настроить цели на работу с формой и потом смотреть, окуда пришел лид.
                В метрике я могу смотреть, это да, но есть задание — при получении формы с данными пользователя должна приходить информация, откуда пришел пользователь. При посещаемости 6000+ искать вручную не айс… Как я выяснил, в web среде такой метод называют «реферальный хвост». Информации об этом очень мало.            
                    - Получить реферара
 - Определить поисковую систему
 - Получить поисковый запрос или ссылку переход с которой был осуществлен
 - Записать в cookie или в сессию результат
 - В нужном месте собрать
 
                Делается очень просто, опишу алгоритм и набросаю от руки, поднимать наработки долго. 
Алгоритм:
Пишем сниппет:
Запускаем в шаблоне, перед <!DOCTYPE>, далее если используется Formit, создаем сниппет-hook и записываем в него следующую конструкцию (как пример):
Итог: получаем плейсхолдер [[+referer]], который содержит всю необходимую информацию по рефереру. Код от руки, естественно требует доработок, но вроде нигде не ошибся.
                    Алгоритм:
Пишем сниппет:
$referer = $_SERVER['HTTP_REFERER'];
setcookie('referer', $referer, mktime(0, 0, 0, 1, 1, 2015));
	
if (stristr($referer, 'yandex.ru')) { 
	$search = 'text='; $crawler = 'Yandex'; 
}
else if (stristr($referer, 'rambler.ru')) { 
	$search = 'words='; $crawler = 'Rambler'; 
}
else if (stristr($referer, 'google.ru')) { 
	$search = 'q='; $crawler = 'Google'; 
}
else if (stristr($referer, 'google.com')) { 
	$search = 'q='; $crawler = 'Google'; 
}
else if (stristr($referer, 'mail.ru')) { 
	$search = 'q='; $crawler = 'Mail.Ru'; 
}
else if (stristr($referer, 'bing.com')) { 
	$search = 'q='; $crawler = 'Bing'; 
}
else if (stristr($referer, 'qip.ru')) { 
	$search = 'query='; $crawler = 'QIP'; 
}
	
if (isset($crawler)) {
	$phrase = urldecode($referer);
	preg_match('/'.$search.'([^&]*)/', $phrase.'&', $phrase2);
	$phrase = $phrase2[1];
}
setcookie('phrase', $phrase, mktime(0, 0, 0, 1, 1, 2015));Запускаем в шаблоне, перед <!DOCTYPE>, далее если используется Formit, создаем сниппет-hook и записываем в него следующую конструкцию (как пример):
$output = '';
foreach ($_COOKIE as $k => $v) {
	if (0 === strpos($k, 'utm')) $output .=  "$k: $v \n";
}
$hook->setValue('referer', $output);
return true;Итог: получаем плейсхолдер [[+referer]], который содержит всю необходимую информацию по рефереру. Код от руки, естественно требует доработок, но вроде нигде не ошибся.
                пользуюсь piwik.org/, умеет. надо лишь настроить цели            
                    
                При включенном pdoparser плейсхолдер [[#SERVER.HTTP_REFERER]] выведет адрес страницы, с которой пришел пользователь            
                    
                Спасибо! Ушел воплощать.            
                    
                Помог парсер и [[#SERVER.HTTP_REFERER]]. Способ через сниппеты сохранил, спасибо за науку!            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.