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

ЕСТЬ РЕШЕНИЕ InstantCMS 2.X
#1 15 октября 2022 в 12:08

Всем привет, кто сможет подсказать как вывести значок устройства с которого сейчас онлайн пользователь (без разницы какой пользователь при просмотре своего профиля или чужого). Как это делается например ВКонтакте. В коробке есть библиотека mobile_detect.class.php, по которой мы можем делать отображение виджетов для ПК и мобильных устройств. Дак вот можно ли с помощью её писать с какого устройства пользователь сейчас на сайте и согласно этого отображать значок телефона или ПК, а так же например «Был онлайн 5 минут назад с ПК или телефона». Я думаю кому-то тоже будет интересна подобная фича. Всем заранее спасибо. 

Изображение

#2 15 октября 2022 в 12:40

Примерно так: в нужном файле/месте шаблона:

  1. <?php $online_icon = $device_type == 'mobile' ? 'иконка смартфона' : ($device_type == 'tablet' ? 'иконка планшета' : ''); ?>
  2.  
  3. <?php echo $online_icon; ?>
#3 15 октября 2022 в 13:33

Примерно так: в нужном файле/месте шаблона:

  1. <?php $online_icon = $device_type == 'mobile' ? 'иконка смартфона' : ($device_type == 'tablet' ? 'иконка планшета' : ''); ?>
  2.  
  3. <?php echo $online_icon; ?>
Нифигаccе о-го-гошеньки

Это будет видеть сам пользователь у себя. Чтобы видели другие, надо устройство запоминать в базе.

Это несложно, но готового кода нет. И нужен будет запрос в базу. Или поле в профиле создать для хранения.

#4 15 октября 2022 в 17:20

Примерно так: в нужном файле/месте шаблона:

  1. <?php $online_icon = $device_type == 'mobile' ? 'иконка смартфона' : ($device_type == 'tablet' ? 'иконка планшета' : ''); ?>
  2.  
  3. <?php echo $online_icon; ?>
Нифигаccе о-го-гошеньки

Не сработало даже на моем профиле(

#5 15 октября 2022 в 18:25

Не сработало даже на моем профиле(

CEH9I

Выше Zau4man сказал, что это не поможет. Так и есть, полностью с ним согласен, невнимательно прочитал задачу. Нужно писать хук, который куда-то (на мой взгляд, лучше всего в специальное поле в таблице в БД) сохраняет устройство при авторизации, а потом во всех файлах, где это нужно, нужно проверять записанное устройство и выводить нужную иконку. Одной строчкой код не отделаться))

#9 16 октября 2022 в 12:03

Да только там файл уже удален))

CEH9I

Под спойлером файл.

instantcms.ru/blogs/korobochka/opredelenie-ustroistva-polzovatelja-v-profile.html#comment_113837

Ris

Спасибо сработало. Единственное надо было cms_users заменить на users. Но это работает только когда пользователь залогиниться и будет пользоваться одним устройством, а если он например залогинен и на телефоне и на ПК, будет указан последний девайс под которым он залогинился, а не тот под которым он сидит в текущий момент. Можно как-то периодически «пинговать» устройство пользователя и обновлять его в БД. Например сейчас в БД записан ПК, идет пинг если пользователь сидит с ПК то ничего не происходит, а если с телефона то обновить устройство в БД. 

#10 16 октября 2022 в 13:45

будет указан последний девайс под которым он залогинился, а не тот под которым он сидит в текущий момент

CEH9I

Если надо — сделал миникомпонент для шаблона модерн. Использует иконки из шаблона.

Устанавливать стандартным способом. Только лучше вернуть родные файлы \system\controllers\users\hooks\auth_login.php и \templates\modern\controllers\users\profile_header.tpl.php

По поводу отображения того, под чем сидит юзер — попробую переделать под событие старт енджайн… может поможет...

Прикрепленный файл
devices.zip 6 Кб
#11 16 октября 2022 в 15:07

будет указан последний девайс под которым он залогинился, а не тот под которым он сидит в текущий момент

CEH9I

Если надо — сделал миникомпонент для шаблона модерн. Использует иконки из шаблона.

Устанавливать стандартным способом. Только лучше вернуть родные файлы \system\controllers\users\hooks\auth_login.php и \templates\modern\controllers\users\profile_header.tpl.php

По поводу отображения того, под чем сидит юзер — попробую переделать под событие старт енджайн… может поможет...

Ris

Вернул) подожду тогда вашей переделки и сразу установлю.)

#12 16 октября 2022 в 15:34

Вернул) подожду тогда вашей переделки и сразу установлю.)

CEH9I

Пробуйте. Добавил еще хук user_auto_login

Прикрепленный файл
devices16102022.zip 6 Кб
#13 16 октября 2022 в 15:55

Вернул) подожду тогда вашей переделки и сразу установлю.)

CEH9I

Пробуйте. Добавил еще хук user_auto_login

Ris

Установил, значек ставится только при логине, если уже залогирован никакого обновления не идет. Или сколько нужно ждать?) Меняется только при перезаходе)

#14 16 октября 2022 в 16:01

Меняется только при перезаходе)

CEH9I

Странно. У меня работает...

Буду искать дальше. Вешать на engine_start — слишком затратно. Будет каждый раз дергать базу при любом движении юзера.

#15 16 октября 2022 в 16:18

Меняется только при перезаходе)

CEH9I

Странно. У меня работает...

Буду искать дальше. Вешать на engine_start — слишком затратно. Будет каждый раз дергать базу при любом движении юзера.

Ris

А если повесить на метод который проверяет онлайн пользователя если можно конечно.

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.