Друзья пользователя в профиле. Как изменить порядок вывода?

#1 23 января 2012 в 23:03
Сейчас друзья пользователя в профиле выводятся по порядку их добавления….Таким образом постоянно одни и те же лица в друзьях пользователя… Вот есть у меня 50 друзей, а в поле зрение попадают только первые 6, про остальных 44 как бы и не вспоминаю…

Я подумал, а что если сделать вывод друзей по дате посещения.
Онлайн | Онлайн | 2 часа назад | 5часов назад |12 часов назад |1 день наза|

Таким образом в поле зрения будут периодически попадать все друзья.

Подскажите как сделать такой вывод друзей в профиле.
#2 24 января 2012 в 17:25
Компонент users
файл frontend.php
строка
  1.  
  2. $usr['friends'] = usrFriends($usr['id'], $usr['friends_total'], 6);
  3.  
usrFriends вот функция отвечающая за вывод
её искать в папке includes компонента users
файл usercore.php
там в запросе $sql нужно, скорее всего добавить order by u.logdate

эта функция также отвечает за вывод друзей, так что лучше новую создать (ну это я предполагаю конечно) ну или оставить всё как есть и тогда люди и в друзьях будут так выводиться.

Сам не проверял. Предположил что так правильно будет.
#3 25 января 2012 в 00:07
Спасибо Михаил!
order by u.logdate desc Кажется помогло…
#4 25 января 2012 в 02:03
А можно по подробнее где какой запрос изменить? А то их там достаточно.
#5 25 января 2012 в 02:18
В файле \components\users\includes\usercore.php
найдите такую строчку- function usrFriends($user_id, &$total, $perpage=10, $page=1){

Ниже в запрос вставляете- order by u.logdate desc

должно быть так:
  1. $sql = "SELECT
  2. CASE
  3. WHEN f.from_id = $user_id
  4. THEN f.to_id
  5. WHEN f.to_id = $user_id
  6. THEN f.from_id
  7. END AS id_friends, u.id as id, u.nickname as nickname, u.login as login, u.is_deleted as is_deleted, u.status, p.imageurl as avatar, u.logdate as flogdate, o.id as online
  8. FROM cms_user_friends f
  9. LEFT JOIN cms_users u ON u.id = CASE WHEN f.from_id = $user_id THEN f.to_id WHEN f.to_id = $user_id THEN f.from_id END
  10. LEFT JOIN cms_user_profiles p ON p.user_id = u.id
  11. LEFT JOIN cms_online o ON p.user_id = o.user_id
  12. WHERE (from_id = '$user_id' OR to_id = '$user_id') AND is_accepted =1
  13. ORDER BY u.logdate desc
  14. LIMIT ".(($page-1)*$perpage).", $perpage";
  15.  
  16. $result = $inDB->query($sql) ;
  17.  
#6 25 января 2012 в 03:44
Спасибо, работает! v
#7 25 января 2012 в 03:48
А вот хотелось бы узнать можно их как нибудь выравнять? А то у кого имя короткое оно маленькое а кого большое они большие, и смотрится как то то больше то меньше, хотелось бы в одинаковый размер всех поставить.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.