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

+29
3.22K
Пара телодвижений позволяющих организовать показ в профиле пользователя тип устройства, точнее 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}
0
Реклама Реклама #
0
Олег Васильевич я Олег Васильевич я 5 лет назад #
Нил™:
В статусе пользователя показываем устройство с которого он заходил
Кому показываем? Для чего показываем? За чей счёт демонстрация?
+4
Нил™ Нил™ 5 лет назад #
1) Самому пользователю. Он должен наконец то узнать с какого устройства он зашел на сайт.
2) Что бы внушить пользователю чувство незащищенности, показать ему, что мы кое что о нём знаем *многозначительная ухмылка*, и это только цветочки.
3) Спонсор показа "Туркменские авиалинии"
+1
Atid Atid 5 лет назад #
Если условие 3 не верно, то два предыдущие условия верны?
0
Нил™ Нил™ 5 лет назад #
не понял вопроса)
0
Александр Александр 5 лет назад #
"летают и слава богу"?
+4
Alekskrug Alekskrug 5 лет назад #
А для 2 ветке есть такая вкусняшка
+2
Def Def 5 лет назад #
поддерживаю вопрос
+1
Нил™ Нил™ 5 лет назад #
ну, я точно не в курсе куда там, что. Может разработчики под вторую ветку заметят интерес, сделают..
+2
Ai Ai 5 лет назад #
Такое бы для двойки.
0
Soul Soul 4 года назад #
В двойке для этого уже есть соответствующий плангин.
+1
титанио титанио 5 лет назад #
Дайте как сделать для 2х
+1
TOPg TOPg 5 лет назад #
согласен, очень нужно!
+2
Val Val 5 лет назад #
А, позвольте узнать, для чего? =)
+3
Jestik Jestik 5 лет назад #
Что бы сделать свой ВК с блэкджеком и ... joke
+2
титанио титанио 5 лет назад #
Так что, как на вторую версию сделать так же ?
0
TOPg TOPg 4 года назад #
пробовали сделать под вторую версию, не удается получить данные, автор помоги!!!
0
Нил™ Нил™ 4 года назад #
Я плохо знаком со второй веткой. Сидеть разбираться, мне оно пока не нужно. Сори.
0
TOPg TOPg 4 года назад #
назовите цену))
0
Нил™ Нил™ 4 года назад #
Вы не потянете мою цену)
Я не разработчик ЖЕ. Я просто методом тыка кое что делаю для себя и кое-что из этого кое-что иногда готов выложить для тех, кто сам не может.
Лучше сделайте по-другому. Огласите сколько можете заплатить и разработчики для двойки которых тут много-много, вероятно найдут время что бы сделать это для вас.
Или посмотрите тут http://instantcms.ru/freelancers
0
Нил™ Нил™ 4 года назад #
Или другое контр предложение. Переходите на единицу! бгг
С единицей осталось работать много энтузиастов, да и там уже много чего есть.
А для двойки пока в основном каждый чих за $$$
0
TOPg TOPg 4 года назад #
я 2 месяца потратил на переход с неё на двойку)))))))
0
Нил™ Нил™ 4 года назад #
В принципе, если вы уже пытались что то сделать для двойки, наверно стоит создать тему на форуме с конкретными вопросами, где там у вас данные получить не удаётся.
0
Ris Ris 4 года назад #
Нормально всё и в двойке получается.
Также стрипозом из юзерагента.
0
WD Sx21 WD Sx21 3 года назад #
Сколько с размером иконки на выходе возился не помогло ничего!в профиле иконка на всю страницу
0
Нил™ Нил™ 3 года назад #
Может быть у вас где то в 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
Нил™ Нил™ 3 года назад #
забыл закрыть тег спан. В конце перед

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

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

Еще от автора

Изменения в компоненте «баннеры»: количество, внешний вид, формат ссылки
Немного изменил компонент баннеры. Вместо одного баннера, теперь выводится два подряд. Сам баннер сопровождается текстовой ссылкой, что позволяет формировать тизеры картинка + заголовок.
Разное содержимое sitemap.xml для каждого из зеркал при мультиязычности сайта
В прошлом посте, который был посвящён организации мультиязычности сайта на Instant 1* посредством поддоменов смотрящих в один и тот же каталог на хостинге, я упоминал о том, что одна из проблем при таком подходе - как отдать разное содержимое sitemap
Подход к организации мультиязычности на сайте с выносом на поддомен но без дублирования файлов
Решил "побаловаться" и запустить англоязычную версию сайта. Сама возможность мультиязычности в первой ветке уже присутствует. В существующем решении и русскоязычная и англоязычная версия страницы будет находиться по одному и тому же url.
Рассылка пользователям сайта с выборкой адресов с рядом условий
Потребовалось разослать информационное сообщение зарегистрированным пользователям сайта. Обычно я не делаю рассылок, поэтому для этого случая у меня нет какого то постоянного решения, компонента, плагина.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.