В статусе пользователя показываем устройство с которого он заходил

+29
3.55K
Пара телодвижений позволяющих организовать показ в профиле пользователя тип устройства, точнее USER AGENT с которым пользователь приходил на сайт при последнем посещении когда обновлялся его logdate



1. Сделать бэкап таблицы cms_users из базы данных и всех изменяемых файлов и сохранить в надёжном месте.



2. В базе данных сделать запрос
  1. ALTER TABLE `cms_users` ADD `lastlog_uagent` VARCHAR(250) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `openid`;
3. В файле /core/classes/user.class.php

вместо

  1. cmsDatabase::getInstance()->query("UPDATE cms_users SET logdate = CURRENT_TIMESTAMP WHERE id = '$user_id'");
вставить

  1. $useragent = cmsCore::strClear((string)$_SERVER['HTTP_USER_AGENT']);
  2. cmsDatabase::getInstance()->query("UPDATE cms_users SET logdate = CURRENT_TIMESTAMP, lastlog_uagent = '$useragent' WHERE id = '$user_id'");
4. В файле /components/users/fronted.php

Перед

  1. cmsPage::initTemplate('components', 'com_users_profile.tpl')->
вставить

  1. $user_logdate_agent = $usr['lastlog_uagent'];
  2. if(stripos($user_logdate_agent,'Android') !== false) { $user_device = 'android';}
  3. if(stripos($user_logdate_agent,'iPod') !== false) { $user_device = 'ipod';}
  4. if(stripos($user_logdate_agent,'iPhone') !== false) { $user_device = 'iphone';}
  5. if(stripos($user_logdate_agent,'iPad') !== false) { $user_device = 'ipad';}
  6. if(stripos($user_logdate_agent,'iOS') !== false) { $user_device = 'ios';}
  7. if(stripos($user_logdate_agent,'Windows Mobile') !== false) { $user_device = 'winmobile';}
  8. if(stripos($user_logdate_agent,'Opera Mini') !== false) { $user_device = 'operamini';}
  9. if(stripos($user_logdate_agent,'Windows NT') !== false) { $user_device = 'desktop';}
  10. if(stripos($user_logdate_agent,'Macintosh') !== false) { $user_device = 'macintosh';}
  11. if(stripos($user_logdate_agent,'Windows Phone') !== false) { $user_device = 'windowsphone';}
  12.  
  13.  
(Если хотите учитывать все возможные юзер агенты, можете поискать их список и добавить строки под каждый юзер агент.)

5. В этом же файле чуть ниже перед

  1. display('com_users_profile.tpl');
вставить

  1. assign('user_device', $user_device)->
6. В шаблоне com_users_profile.tpl

где нибудь перед или после {$usr.flogdate}

вставить

  1. {if $user_device}<img src="/images/icons/devices/{$user_device}.png" alt="{$user_device}" align="absmiddle" width="16" height="16" />{/if}
в папку /images/icons/devices/ закачать иконки для каждого юзер агента в списке из пункта 4. То есть android.png, ipod.png, iphone.png и так далее.


Если всё сделали верно должно получиться как то так.

Иллюстрация

Иллюстрация

Вроде ничего не забыл.

Если хотите дополнить, улучшить, не стесняйтесь.

UPDATE

Зачем это
Не то, что бы я кого то уговаривал, просто объясняю (в ответ на вопросы ниже) зачем это было нужно мне.
Делал себе для того, что бы лучше понимать с каких устройств на сайте лучше конверт, регистрация и далее. Яндекс метрика показывает соотношение мобильных посетителей к десктопам, но далее у меня провал, я не могу знать, кто чаще регистрируется, мне хотелось бы это понимать для себя, как админа. Например, таким образом, я наконец то узнал, что есть такой юсер агент как Windows Phone, а у меня в настройках мобильной версии не указано, что этому юсер агенту показывать мобильную версию и люди с этих устройств получали полную версию.

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

Список юсер агентов
После двух дней работы на своем сайте, у себя добавил два агента для Макинтош (десктоп) и Виндовс Фон (мобильный)
Выше тоже их добавил.

В принципе, думаю нет нужды выводить разную иконку под каждый юзер агент одного типа. Например opera mini, iphone, windows phone могут выглядеть одинаково, как мобильный телефон, а для подробной информации (для админа) можно добавить тег title, что бы при наведении на иконку появлялась подсказка, какой именно Юзер агент.

Иллюстрация

  1. {if $user_device}<img src="/images/icons/devices/{$user_device}.png" {if $is_admin} title="{$user_device}"{/if} alt="{$user_device}" align="absmiddle" width="16" height="16" />{/if}
Олег Васильевич я Олег Васильевич я 7 лет назад #
Комментарий удален
+4
Нил™ Нил™ 7 лет назад #
1) Самому пользователю. Он должен наконец то узнать с какого устройства он зашел на сайт.
2) Что бы внушить пользователю чувство незащищенности, показать ему, что мы кое что о нём знаем *многозначительная ухмылка*, и это только цветочки.
3) Спонсор показа "Туркменские авиалинии"
+1
Atid Atid 7 лет назад #
Если условие 3 не верно, то два предыдущие условия верны?
0
Нил™ Нил™ 7 лет назад #
не понял вопроса)
0
Александр Александр 7 лет назад #
"летают и слава богу"?
+4
Alekskrug Alekskrug 7 лет назад #
А для 2 ветке есть такая вкусняшка
+2
Def Def 7 лет назад #
поддерживаю вопрос
+1
Нил™ Нил™ 7 лет назад #
ну, я точно не в курсе куда там, что. Может разработчики под вторую ветку заметят интерес, сделают..
+2
Ai Ai 7 лет назад #
Такое бы для двойки.
0
Soul Soul 7 лет назад #
В двойке для этого уже есть соответствующий плангин.
+1
титанио титанио 7 лет назад #
Дайте как сделать для 2х
+1
TOPg TOPg 7 лет назад #
согласен, очень нужно!
+2
Val Val 7 лет назад #
А, позвольте узнать, для чего? =)
+3
Jestik Jestik 7 лет назад #
Что бы сделать свой ВК с блэкджеком и ... joke
+2
титанио титанио 7 лет назад #
Так что, как на вторую версию сделать так же ?
0
TOPg TOPg 7 лет назад #
пробовали сделать под вторую версию, не удается получить данные, автор помоги!!!
0
Нил™ Нил™ 7 лет назад #
Я плохо знаком со второй веткой. Сидеть разбираться, мне оно пока не нужно. Сори.
0
TOPg TOPg 7 лет назад #
назовите цену))
0
Нил™ Нил™ 7 лет назад #
Вы не потянете мою цену)
Я не разработчик ЖЕ. Я просто методом тыка кое что делаю для себя и кое-что из этого кое-что иногда готов выложить для тех, кто сам не может.
Лучше сделайте по-другому. Огласите сколько можете заплатить и разработчики для двойки которых тут много-много, вероятно найдут время что бы сделать это для вас.
Или посмотрите тут http://instantcms.ru/freelancers
0
Нил™ Нил™ 7 лет назад #
Или другое контр предложение. Переходите на единицу! бгг
С единицей осталось работать много энтузиастов, да и там уже много чего есть.
А для двойки пока в основном каждый чих за $$$
0
TOPg TOPg 7 лет назад #
я 2 месяца потратил на переход с неё на двойку)))))))
0
Нил™ Нил™ 7 лет назад #
В принципе, если вы уже пытались что то сделать для двойки, наверно стоит создать тему на форуме с конкретными вопросами, где там у вас данные получить не удаётся.
0
Ris Ris 7 лет назад #
Нормально всё и в двойке получается.
Также стрипозом из юзерагента.
0
WD Sx21 WD Sx21 5 лет назад #
Сколько с размером иконки на выходе возился не помогло ничего!в профиле иконка на всю страницу
0
Нил™ Нил™ 5 лет назад #
Может быть у вас где то в css указано для картинок в родительском диве ширина на 100%!important
попробуйте задать класс для самой картинки и прописать ширину в css для класса
<img class="userdeviceinfo"

.userdeviceinfo{
width:16px!important;
height:16px!important;
}

Если не поможет, то вместо

Код PHP:
  1. {if $user_device}<img src="/images/icons/devices/{$user_device}.png" {if $is_admin} title="{$user_device}"{/if} alt="{$user_device}" align="absmiddle" width="16" height="16" border="0"/>{/if}
так

Код PHP:
  1. {if $user_device}<span {if $is_admin} title="{$user_device}"{/if} style="width:15px; height:16px; background:url(/images/icons/devices/{$user_device}.png) center no-repeat;")"{/if}
0
Нил™ Нил™ 5 лет назад #
забыл закрыть тег спан. В конце перед

Код PHP:
  1. {/if}
тег

Код PHP:
  1. </span>
0
WD Sx21 WD Sx21 5 лет назад #
Заменил ширину 100%!important на меньший процент!Спасибо!
0
WD Sx21 WD Sx21 5 лет назад #
Всё сделал-и ничего! версия 1.10.7 шаблон Токарева
0
WD Sx21 WD Sx21 5 лет назад #
Отбой всё ок)тупанул

Еще от автора

Капча на сайт или разделы сайта
Если нужно, закрыть весь сайт или некоторые его разделы каптчей.
Пинг поисковых систем для первой ветки
Небольшая интеграция инструментов для пингования, чтобы сделать его чуть удобнее
Генератор карты сайта в формате txt на лету без крона
Вообще то где то тут уже есть вполне рабочие генераторы карты для первой ветки, но этот вариант тоже имеет право быть.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.