Всем здрасти!
Проблема. На сайт могут заходить зарегистрированные пользователи. Нужно на странице профайла мне выводить на сайте ли тот или иной пользователь или нет. Как определить на сайте ли пользователь?
Заранее спасибо!
<?php
$time_period = variable_get('user_block_seconds_online', 2700);
$uid = $account->uid; // get the current userid that is being viewed.
if ($account->access > time() - $time_period) {
echo 'Online';
}
else {
echo 'Offline';
}
?>
Спасибо большое за советы, но наверное мне нужно было уточнить, что страница профайла у меня создается посредством модуля Content profile, и поэтому страницы user-profile.tpl.php у меня просто нет, страница у меня формируется в node-profile.tpl.php
И поэтому код для страницы профайла не сработает.. если я не права то поправьте плизз.. и вопрос остается открытым что же делать?
А если использовать таблицу Sessions, то не могли бы описать что там за поля, у меня там просто 1 запись по которой я не могу сделать корректные выводы..
У меня не сработало.. Вывожу print $account->uid; и в итоге пустота.. т е ничего не выводит, отсюда я сделала выводы что на странице node-profile это не пройдет..
А куда вставить этот код, если нету файлов user-profile.tpl.php и node-profile.tpl.php.
Создавал эти файлы, не помогло. Как найти переменные, которые выводят инфу о пользователе?
Использую тему waffles.
А куда вставить этот код, если нету файлов user-profile.tpl.php и node-profile.tpl.php.
Создавал эти файлы, не помогло. Как найти переменные, которые выводят инфу о пользователе?
Использую тему waffles.
Чтобы создать тип профайл (как в моем случае), нужно установить модуль Content profile. Тогда когда тип материала будет существовать нужно будет создать материал с типом Профиль и создать файл node-profile.tpl.php и там уже писать все что нужно.. Все доступные данные можно узнать написав там строку :
<?print var_dump($node);?>
А почему не используете стандартный блок "Кто он-лайн?", просто в настройках видимости блока укажите страницу где его нужно показать.
Потому что мне нужно чтоб была типа надпись Онлайн рядом с именем пользователя, а не общее кол-во пользователей на сайте.. поэтому этот вариант не подходит
И все-таки Вернулись к первому оратору, предложившему лезть в БД...
"witch" wrote:
Content profile
Ф топку этот модуль. Все делается без него. На все 100%. Его прелесть только в одном: если туп или ленив - используй модуль. Он собако тяжелый и делает лишь рутину по настройке нужностей. Коряво делает. Допиливать надо.
Возможно этот модуль чем то Вас не устраивает, но это не дает Вам право называть всех людей использующих его тупыми и ленивыми.. давайте не будем переходить за рамки приличия.. Мне нужно было его использовать в силу того что нужно было кучу полей, среди них и связи.. как сделать по другому не придумала..
Комментарии
Запрос к таблице session
Cессии трогать не нужно.
Встройте этот код в ваш user-profile.tpl.php
<?php
$time_period = variable_get('user_block_seconds_online', 2700);
$uid = $account->uid; // get the current userid that is being viewed.
if ($account->access > time() - $time_period) {
echo 'Online';
}
else {
echo 'Offline';
}
?>
Спасибо большое за советы, но наверное мне нужно было уточнить, что страница профайла у меня создается посредством модуля Content profile, и поэтому страницы user-profile.tpl.php у меня просто нет, страница у меня формируется в node-profile.tpl.php
И поэтому код для страницы профайла не сработает.. если я не права то поправьте плизз.. и вопрос остается открытым что же делать?
А если использовать таблицу Sessions, то не могли бы описать что там за поля, у меня там просто 1 запись по которой я не могу сделать корректные выводы..
user-profile.tpl.php или node-profile.tpl.php - абсолютно неважно
У меня не сработало.. Вывожу print $account->uid; и в итоге пустота.. т е ничего не выводит, отсюда я сделала выводы что на странице node-profile это не пройдет..
Спасибо, полезно
А куда вставить этот код, если нету файлов user-profile.tpl.php и node-profile.tpl.php.
Создавал эти файлы, не помогло. Как найти переменные, которые выводят инфу о пользователе?
Использую тему waffles.
Чтобы создать тип профайл (как в моем случае), нужно установить модуль Content profile. Тогда когда тип материала будет существовать нужно будет создать материал с типом Профиль и создать файл node-profile.tpl.php и там уже писать все что нужно.. Все доступные данные можно узнать написав там строку :
<?print var_dump($node);?>
А почему не используете стандартный блок "Кто он-лайн?", просто в настройках видимости блока укажите страницу где его нужно показать.
Потому что мне нужно чтоб была типа надпись Онлайн рядом с именем пользователя, а не общее кол-во пользователей на сайте.. поэтому этот вариант не подходит
http://drupal.org/node/36822
Крутите вниз
Спасибо, посмотрю..
И все-таки Вернулись к первому оратору, предложившему лезть в БД...
Ф топку этот модуль. Все делается без него. На все 100%. Его прелесть только в одном: если туп или ленив - используй модуль. Он собако тяжелый и делает лишь рутину по настройке нужностей. Коряво делает. Допиливать надо.
Возможно этот модуль чем то Вас не устраивает, но это не дает Вам право называть всех людей использующих его тупыми и ленивыми.. давайте не будем переходить за рамки приличия.. Мне нужно было его использовать в силу того что нужно было кучу полей, среди них и связи.. как сделать по другому не придумала..
Ведьма права, какая адекватная замена Content profile?
Не проблема, добавьте одну строчку
<?php
$account = user_load(array("uid" => $node->uid));
?>
Спасибо Вам огромное!
Если она выводит в шаблоне ноды, то не думаю, что user_load лучший способ - всё же подумаем о производительности
Гораздо проще: ;
<?php
global $user;
print $user->uid;
?>
Это конечно куда проще, но только вот $user содержит информацию о текущем пользователе, т.е. о том кто просматривает страницу, а не о авторе ноды.
Ага, верно, я облажался