Пробуем и тестируем

Рецепты на все случаи жизни

Вывод модулей Joomla в зависимости от источника посетителя

Вывод модулей Joomla в зависимости от источника посетителя

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

Это должно позволить разрулить клиентов приходящих с поисковиков, с рекламы Google и других партнёрок. Посмотреть сколько приходит "реальных" клиентов. Тех, кто оставил контакты или позвонил.

Для начала вставим в шаблоне до тега <body> следующий код:

<?php

$er_time=date("H:i:s d M Y"); // записываем текущее время в строку, используя заданный формат $U=getenv("HTTP_USER_AGENT"); // получаем данные о софте, который испольует пользователь $H=getenv("HTTP_REFERER"); // получаем URL, с которого пришёл посетитель $R=getenv("REMOTE_ADDR"); // получаем IP посетителя $W=getenv("REQUEST_URI"); // получаем относительный адрес странички, которую запросил посетитель $pos = strpos($H, "Direct"); $pos1 = strpos($W, "Direct"); $session = JFactory::getSession(); if ($pos || $pos1) { $session->set('user_ref', 'yandirect'); } ?>

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

$user_ref = $session->get('user_ref', ''); //Получаем из сессии наличие клиента с яндекса

//----------Это блок логит в папке logs в файле reference.log клиентов определенных как целевые if ($user_ref) { $f=fopen("logs/reference.log",'a'); // дальше - понятно, пишем всё это в файл flock ($f,2); fwrite($f,"$user_ref\n\n"); fclose($f); } //----------Это блок логит в папке logs в файле reference_all.log вообще всех $f=fopen("logs/reference_all.log",'a'); // дальше - понятно, пишем всё это в файл flock ($f,2); fwrite($f,"$er_time\n Br: $U\n Rf: $H\n IP: $R\n Rq: $W\n\n"); fclose($f);

Используя его вы сможете оставить историю и проанализировать клиентов за период времени.

Как итог - у нас имеется переменная $user_ref. Если она не пуста - клиент пришел с рекламы. Значит ее можно использовать для подмены модулей.

Например:

<?php if( $this->countModules('03-linedopmenu') && $session->get('user_ref', '')) : ?>
	<jdoc:include type="modules" name="03-linedopmenu" style="xhtml" />
<?php else: ?> 
	<jdoc:include type="modules" name="04-linedopmenu" style="xhtml" />
<?php endif; ?>

То есть. Для отображения модуля в позиции шаблона в котором выводятся контакты появилось дополнительное условие. Если модуль не пустой и посетитель пришел к нас с сессией яндекс рекламы - мы выводим ему 03-linedopmenu или иначе - 04-linedopmenu.

Само собой там разные контакты.

К сожалению, заказчик так и не определился со стартом данного функционала и не запустили в работу это решение. Так что оно не тестировалось.

Вообще это песочница. Я это больше для себя выкладываю. Так что если что то не работает или знаете как сделать лучше - пишите комменты. 

К стати. 

Пока Писал данный материал в песочницу - столкнулся с тем, что для Joomla 3 и JCE нет кнопочки или готового решения вроде GESHI. При чем у TinyMCE Есть кнопка пример кода. Но беда в том, что мне сам редактор не очень нравится. Я привык к JCE.

Поэтому по ходу написания статьи и организации собственно песочницы я вымучал кнопочку для JCE, через которую вставляю примеры кода. В дальнейшем форматирую его при помощи highlight.js

Плагин позже выложу в файлах.

Комментарии (0)

Оставить комментарий

Вы комментируете как Гость.

Статус материала

  • jomla
  • jbzoo
  • css3
  • html5
  • Java script
  • jquery
  • bootstrap
Мы находимся в Минске
работаем по всей РБ
  • mts+375 29 779-72-95viber
  • vel+375 44 779-72-95
  • email: Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
  • skype: tirby_kat
Индивидуальный предприниматель
Кулак Сергей Николаевич
УНП: 590816946
зарегистрирован Зельвенским районным исполнительным комитетом
от 01.06.2010
Свяжитесь со мной