Приветствую в новой полезной статье по Drupal 8!
Сегодня разберем, как добавить статус онлайн/оффлайн пользователя на сайте. Это неотъемлемый элемент социальной сети или профиля на сайте.
Для того, чтобы создать статус пользователя достаточно обычных средств Drupal "из коробки"; никаких модулей устанавливать не нужно.
Предлагаю рассмотреть два варианта подключения:
- Создание метки "Онлайн" или "Офлайн".
- Создание метки "Пользователь был 42 минуты назад" или "Пользователь был 4 декабря 2017 г. в 15:30".
Первый вариант: Метка "Онлайн".
Создайте представление "Статус пользователя" выбрав тип представления "Пользователь".
Если вы создаете метку для страница (профиля) пользователя, то во view необходимо добавить контекстный фильтр "ID пользователя". В параметрах когда значение фильтра недоступно укажите "Передать значение по умолчанию" и выберите компонент пути - 2. Таким образом представление будет фильтровать пользователей исходя из id пользователя в url адресе страницы.
Дальше нужно перезаписать поле "Пользователь: имя", которое автоматически добавилось при создании представления. В разделе перезаписать результаты переопределите вывод поля текстом "Онлайн". Сохраните поле.
Можете просто добавить поле "Нефильтруемого текста" и написать требуемое слово.
После чего в представлении в разделе "Поведение при отсутствии результатов" добавьте поле "Нефильтруемый текст" и напишите там "Офлайн".
Перейдем к настройкам фильтрации.
Добавьте критерий фильтрации "Пользователь: последнее посещение". Если в представлении имеется связь, добавьте ее. Затем выберите оператор "Больше или равно", а в тип значения "Смещение от текущего времени, например "+1 day" или "-2 hours -30 minutes". Укажите значение "-15 minutes".
В итоге у вас должно получиться что-то типа:
Теперь каждый пользователь который был на сайте не позже 15 минут получит метку "Онлайн".
Второй вариант: Метка "Пользователь был 15 минут назад".
Чтобы создать метку "Пользователь был 15 минут назад" создайте представление "Статус пользователя" выбрав тип представления "Пользователь".
Добавьте поле "Пользователь: последнее посещение". Выберете формат даты "В прошлом" и сохраните. Задайте уровень детализации: значение 1 - до минут, 2 - до секунд.
Сохраните.
Теперь представление будет выводить время последнего посещения пользовалем сайта.
P.S. По желанию можете разбавить представление с помощью контекстных фильтров. Они помогут вам если нужно будет сделать метки непосредственно на страницах пользователей.
На этом все! Если понравилась статья ставьте лайк, так я пойму, что контент вам полезен и интересен. Делитесь ею с друзьями в соцсетях, пишите комментарии, если вам есть что добавить.