Автор Тема: Рефер посетителя превратит в код. Заманчиво?  (Прочитано 2103 раз)

21 Март 2014, 20:58:01
  • Новичок
  • *
  • Сообщений: 44
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Может кто знает, как можно захватить рефер посетителя, то есть откуда он пришел на сайт и в зависимости от этого назначить ему код.
Например, если пришел из Яндекс, то код Я500

и вывести этот код в хидере, чтобы при разговоре с клиентом было проще понять откуда клиент.
22 Март 2014, 18:38:51
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В классе Tools метод getRemoteAddr - определение адреса посетителя.
23 Март 2014, 15:21:29
Ответ #2
  • Новичок
  • *
  • Сообщений: 44
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо , но я не понимаю как работать с этим.
Сделал вот как: прописал в хидер тпл
{php}
if (!empty($_SERVER["HTTP_REFERER"]) and  !isset($_COOKIE['last_ref'])){
SetCookie( 'last_ref', $_SERVER["HTTP_REFERER"], time()+31536000);
}
elseif (empty($_SERVER["HTTP_REFERER"]) and  !isset($_COOKIE['last_ref'])){
SetCookie( 'last_ref', 'link', time()+31536000);
}
{/php}
При заходе в первый раз человеку присваивается кук. 
Дальше в шаблоне модуля blocktopmenu
вывел в зависимости от куки код.
<li>
{if $smarty.cookies.last_ref|strstr:"id.com"}
Код клиента: Б-120
{/if}
{if $smarty.cookies.last_ref|strstr:"google"}
Код клиента: C-120
{/if}
</li>
Но когда человек попадает на страницу, код сразу не выводится, потому что на момент загрузки куки еще не было.
Поэтому пришла в голову мысль достать как-то $_SERVER["HTTP_REFERER"]  и если вывести в зависимости от его значения   код.
Пытался сделать через echo  в php. но тогда сайт вообще не загружается.
Если бы кто подсказал, что можно сделать, или может, как достать HTTP_REFERER в смарти....   
где-то в инете норвался на $smarty.server.HTTP_REFERER  ... но он не пашет(((
23 Март 2014, 17:38:55
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Лучше все делать в php файле. Потом его подключать в шаблоне smarty.
23 Март 2014, 20:28:13
Ответ #4
  • Новичок
  • *
  • Сообщений: 44
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
С точки зрения чего лучше? Это важно.
С точки зрения, что так красивее код? то это не проблема. если все заработает перенесу и включу через инклюд.
Или если я перенесу все в пшп файл и включу как инклюд, что-то измениться...  вообщем то я проверю)


проверил. не помогает.
24 Март 2014, 00:22:20
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Smarty - это шаблонизатор. Используется только для шаблонов. Вывод блоков, текстов и т.д.
Цитировать
где-то в инете норвался на $smarty.server.HTTP_REFERER  ... но он не пашет(((
Вот имено, что на такое только нарваться можно. Для этого и разделение PHP отдельно код, Smarty визуализация страниц отдельно.
Все функции определение ip, обработка запросов, инициализация переменных делаются в файле php. В Smarty передают переменные, которые нужно показать пользователю. Поэтому и не работает ничего. Вот так определть IP адрес.
$ip_cliet = Tools::getRemoteAddr();Куки устанавливаются сразу при заходе клитента на сайт. Их не нужно устанавливать самому.
$this->context->cookie;
$this->context->cookie = $variable; //Добавить в куки какое-нибуть значение
$this->context->cookie->variable; // Получить установленое значение
24 Март 2014, 00:24:24
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Модуль нужно делать, а не шаблоны менять. Подключить в хук Top.
Можно поменять модуль меню, если нужно там показывать.
24 Март 2014, 10:17:39
Ответ #7
  • Новичок
  • *
  • Сообщений: 44
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
я вот всегда возвращаюсь и вижу, что есть ответ. и радуюсь. но когда его читаю, понимаю, что людям лишь бы воду вылить и сообщений накосить...
По делу будет что? Есть реально умные люди?

По предыдущему ответу.
Я прекрасно понимаю, что надо делать модуль.  Сам я его сделать не могу. Делаю как могу.  Если не решу закажу.

Прошу не надо обижаться, не надо писать какой я плохой  и тд. Если вы не по делу, а просто удовлетворить свои потребности, то проходите мимо. Будьте людьми.
24 Март 2014, 12:31:14
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
24 Март 2014, 13:13:23
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Для "реально умных"
- PrestaShop 1.5 Developer Guide
- Руководство по Smarty
- Руководство по PHP
Плюс в репутацию!
Это только и поможет самому умному.

Для других, кто хочет "помочь" этому автору (на форуме запрещено выражаться, а жаль). Прежде чем писать, подумайте. Вот так помогать тем, кто ничего не знает. Дураком тебя же и назовут.
24 Март 2014, 15:11:17
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 849
  • Репутация: +79/-0
    • Просмотр профиля
Дааа, запущенный случай.
Даже я, женщина, и то понимаю, ну никто не разжует и не положит в рот. Если не получается то что советуют, то это не ваше, отдайте делать профессионалам и раслабтесь.
24 Март 2014, 15:39:43
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Про javascript забыли. Если трудности с PHP, то можно такое сделать на JavaScript в любом шаблоне.
<script type="text/javascript">
    /*
    *  Возвращает значение только когда посетитель пришел на сайт
    *  используя ссылку на другой странице.
    *  В противном случае возвращает пустую строку.
    */
    var site = document.referrer;
    document.write("Посетитель пришел с сайта: " + site);
</script>
24 Март 2014, 16:54:55
Ответ #12
  • Новичок
  • *
  • Сообщений: 44
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Для "реально умных"
- PrestaShop 1.5 Developer Guide
- Руководство по Smarty
- Руководство по PHP
Плюс в репутацию!
Это только и поможет самому умному.

Для других, кто хочет "помочь" этому автору (на форуме запрещено выражаться, а жаль). Прежде чем писать, подумайте. Вот так помогать тем, кто ничего не знает. Дураком тебя же и назовут.

Никто дураками Вас не называл.
Просто форумы пладят ответами не по теме.  Задан вопрос  - нужен ответ. или хотя бы часть ответа.
А сообщения типа, посмотри в гугл, изучи php, это делается через класс такой ....
Для чего же форум... для того, чтобы те у кого уже серьезный уровень заходили и писали вопросы? это не логично.
Я прошу прощения, если кого обидел.
Мои знания скудны, а денег нет (а этот форум только для платных консультаций? вроде нет.)
Знаю немного php (без ООП), ориентируюсь в смарти. знаю цсс, знаю html.
Это все я могу пока. дальше изучу и буду помогать тем, кто пока еще не понял, как и что.
А за деньги любой может. Заказать это вопрос 10 минут. Еще раз извините, и может кто-нить проявит снисходительность к моей ничтожной персоне и поможет мне? Спасибо.
24 Март 2014, 16:59:12
Ответ #13
  • Новичок
  • *
  • Сообщений: 44
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Smarty - это шаблонизатор. Используется только для шаблонов. Вывод блоков, текстов и т.д.
Цитировать
где-то в инете норвался на $smarty.server.HTTP_REFERER  ... но он не пашет(((
Вот имено, что на такое только нарваться можно. Для этого и разделение PHP отдельно код, Smarty визуализация страниц отдельно.
Все функции определение ip, обработка запросов, инициализация переменных делаются в файле php. В Smarty передают переменные, которые нужно показать пользователю. Поэтому и не работает ничего. Вот так определть IP адрес.
$ip_cliet = Tools::getRemoteAddr();Куки устанавливаются сразу при заходе клитента на сайт. Их не нужно устанавливать самому.
$this->context->cookie;
$this->context->cookie = $variable; //Добавить в куки какое-нибуть значение
$this->context->cookie->variable; // Получить установленое значение

За это спасибо.
24 Март 2014, 17:16:35
Ответ #14
  • Новичок
  • *
  • Сообщений: 44
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Дааа, запущенный случай.
Даже я, женщина, и то понимаю, ну никто не разжует и не положит в рот. Если не получается то что советуют, то это не ваше, отдайте делать профессионалам и раслабтесь.

Жаль , что грубить действительно нельзя. Кому и где расслабиться - это вы себе дома говорите.  Мое это или не мое, только мне решать.  А то, что вы себя прибедняете, словами "даже я женщина", то это зря. Или это жизненная позиция? Я знаю девушек, которые , если и не всем, то многим фору дадут.

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