Hi All!
Доброго времени суток! Совсем обыскался решения и все впустую.
Необходимо вывести в профиль пользователя список гостей (content_profile, panels).
Знаю, есть модуль user_visits, но он категорически не подходит из-за невозможно отконфигурировать (размер аватары - пресет и пр.)
Попытался сделать список вьюсом - че-то совсем ничего не выходит
Подскажите, пожалуйста, решение. Может кто опытом поделится?..
Заранее спасибо!
Комментарии
вы ошибаетесь насчет User_visits, ставьте еще модуль Imagecache Profile Pictures и тогда сможете контролировать размеры картинок. сам юзаю его и все ок, единственное его код подправил, чтобы он таблицей выдавал пользователей.
Николай, а как победить "глюк" "Default picture"? Т.е., если у пользователя имеется аватарка, она віводится через пресет заданным размером, а если аватарки нет, то выводится Default picture нежелательного размера. Есть ли рецепт?
Установлен у меня Imagecache Profile. И в user_visits я не могу выбрать нужный мне пресет - тупо рисует в профиле большие аватары. Плюс, действительно, вывод табличный отсутствует... Если вы его довели до ума, не поделитесь ли?
так у меня стоит два модуля user_visit и user_visits_adv. Список последних гостей моей страницы выводит именно user_visits adv. чтобы он выводил таблицей, я переделал блок с пользователями -
global $user;
$i=0;
$output .="<table class='views-view-grid'>";
if ($user->uid) {
$visitors = user_visits_adv_get('visitors', $user->uid);
if (is_array($visitors)) {
$visitors = array_slice($visitors, 0, $limit, TRUE);
foreach ($visitors as $uid => $visit) {
if($i % $per_row == 0)$output .="<tr>";
$account = db_fetch_object(db_query('SELECT uid, name, picture FROM {users} WHERE uid = %d', $uid));
$output .= theme('user_visits', $account, $visit,NULL,1);
if($i % $per_row== ($per_row-1) || $i == $limit)$output .="</tr>";
$i++;
}
}
}
$output .="</tr></table>";
return $output;
}
т.к. модуль обращается к user_visit для темизации визитора, редактируем функцию темизации послднего
* Themeable function
*/
function theme_user_visits($account, $timestamp = NULL, $referer = NULL , $case = 0) {
switch ($case) {
case 0:
$output = '<div>'."\n";
$output .= theme('imagecache', 'preset_name', $account->picture);
$output .= ' <div class="name">'. theme('username', $account) .'</div>'."\n";
if ($timestamp) {
$output .= $timestamp ? ' <div class="visit">'. t('!time ago', array('!time' => format_interval(time() - $timestamp))) .'</div>'."\n" : '';
$output .= $referer ? ' <div class="referer">'. t('Referer !link', array('!link' => l($referer, $referer))) .'</div>'."\n" : '';
}
$output .= '</div>'."\n";
break;
case 1:
$output = '<td><div class="picture-wrapper">'."\n";
if(!empty($account->picture))
$output .= theme('imagecache', 'profile_180', $account->picture);
else $output .= theme('user_picture', $account);
$output .= '</div><div class="name">'. theme('username', $account) .'</div>'."\n";
if ($timestamp) {
$output .= $timestamp ? ' <div class="visit">'.format_date($timestamp, 'small').'</div>'."\n" : '';
$output .= $referer ? ' <div class="referer">'. t('Referer !link', array('!link' => l($referer, $referer))) .'</div>'."\n" : '';
}
$output .= '</td>'."\n";
}
return $output;
}
потом создайте preset с нужными размерами.
p.s. у меня в коде имя preset'а profile_180, и не бойтесь изменять код, особенно темизации, ведь надо делать под себя, а не обходиться стандартными.
Спасибо! Вроде работает. По крайней мере, пресет отрабатывается. Отображения в таблице не смог оценить - три юзера пока что, сорри
Самая непонятная вещь - после внесения вашей редакции в код, откатился, но не помогло - "забывает" модуль посетителей и все тут. Не более получаса помнит кто заходил, а потом "нуль"
http://127.0.0.1/admin/user/user_visits посмотри настройки, может Stored visitors limit: у тебя меньше, чем 8, у меня настроено на 8 человек хранение данных, а так у меня все ок, так как по сути в коде меняем только отображение, кстати после внесения изменений в отображение, не забывай по http://127.0.0.1/admin/settings/performance чистить кеш, т.к. друпал все кеширует, и потом глючит, если не чистить кеш при внесении изменений.
Глючит то ли из-за Content-Profile, то ли из-за Panels - не понятно. На тестовой установке друпала работает ОК. Буду искать причину...
Народ! У кого работает связка user_visits, content_profile + panels - помогите плиз настроить!!
У меня user_visits забывает визитеров по видимому из-за панелей (может не правильно настраиваю профиль)...
Напрочь склерозит и без панелей. Я уже устал.
Есть ли другое решение для реализации данной функции????
Опытным путем установлено, что табличку user_visits чистит cron!!!
Как отучить его это делать, кто-нибудь сталкивался??
в модуле посмотрите функции с приставкой cron и уберите лишнее.
как вывести в кастомный профиль информацию которая появляется в профиле юзера после включения.
в модуле нет упоминаний о cron`e !!!
user_visits_adv_cron функция в модуле user_visits_adv.
Вот! Кажись наконец-то разобрался... Фух. Столько времени блин потеряно.
Я себе подумал - а зачем мне еще один модуль (adv)? Но он у меня таки болтался включенным, а в коде у него стоит добродушная очистка таблицы user_visits по крону...
// all data is harvested, so empty the user_visits table
db_query('DELETE FROM {user_visits}');
Все блин корректно... Я тормоз.
таки никто не подскажет как в кастомном профиле вывести список тех кто побывал - хотя бы через запятую и в скобках время... ну или в столбик в две колонки?
Блин, по моему опыту ковыряния с user_visits, тебе, скорее всего, придется править код модуля.
Т.е., user_visits выводит в content_profile инфу о посетителях, а вот дополнительные данные и темизация...
Темизация - см. выше. Доп данные - в коде модуля...
Можно как то настроить, чтобы не было видно когда Админ посещает профиль пользователя в его гостях?