Последние дни очень плотно изучаю систему Drupal и возникла следующая задача: вывести страницу с друзьями пользователя, указав при этом их статус (онлайн или оффлайн).
Как сделать на странице самого пользователя это не проблема. Пара строк кода. А как вывести статусы в списке друзей — тут я повозился.
В работе используются модули: Views, ImageCache
Настроил View следующим образом:
В настройках страницы View есть свойство «Адрес» (path), в него пишем: user/%/friends. Вместо % будет подставлять id пользователя.
Здесь по пунктам:
1. Жмем на ссылку «Информация»
2. Создаем файл views-view-table—user-relationships-browser—page.tpl.php в папке с нашей темой, он будет переопределять вывод.
3. Жмем на «Стиль ввода». Получаем код, который надо вставить в созданный файл.
Теперь остается оформить вывод. Я ставлю стиль «Таблица», а в php файле делаю цикл для вывода полей:
<?php $i=1; foreach ($rows as $count => $row): // Начинаем цикл ?> <div class="item clear-block <?=$i%3==0 ? 'last': ''?>"> <!--Открываем блок, если блок 3 в строке, то ставим ему класс last --> <?echo $row['picture']?> <!--выводим все нужные поля--> <?echo $row['value_1']?> <!--выводим все нужные поля--> <?=$i%3==0 ? '<div class="clr"></div>': ''?> <!--Если i=3, т.е. третий элемент, то ставим перенос строки--> <?php $i++; endforeach; ?> |
Теперь самое главное — отображаем статус пользователя. В настройках View необходимо выводить поле «Пользователь: Последний доступ». Формат даты: Собственный. В поле «Пользовательский формат даты:» пишем d-m-Y G:i:s
Снова возвращаемся к нашему циклу, где мы выводим поля пользователя и дополняем код:
<? $str = strtotime($row['access']); // получаем время последнего доступа print (round((time()-$str)/60) < 15) ? t('Online') : t('Offline'); // Делаем проверку и выводим статус ?> |
Результат:
Друзья выводятся в три колонки + у каждого отображается статус.
Онлайн/Оффлайн статусы друзей в Drupal: 0 комментариев