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

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

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

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

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

Для начала вставим в шаблоне до тега

следующий код:
$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. Если она не пуста - клиент пришел с рекламы. Значит ее можно использовать для подмены модулей.

Например:

countModules('03-linedopmenu') && $session->get('user_ref', '')) : ?>
        
 
        

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

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

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

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

К стати. 

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

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

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

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

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

    Пожалуйста, войдите, чтобы комментировать.

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

    • 2016-10-19
    • 1212
    • Требования: Joomla
    • Раздел: Песочница
    • Метки: Joomla, Шаблон
    • Обновлён: 2019-06-24
    • jomla
    • jbzoo
    • css3
    • html5
    • Java script
    • jquery
    • bootstrap
    Мы находимся в Минске
    работаем по всей РБ