Как сделать сортировку по Группам пользователей

#1 22 августа 2010 в 14:48
В каждом профиле наверху текстом указывается группа, к которой пользователь принадлежит. Например "Писатели" или "Пользователи".

Как бы исхитриться, чтобы сделать по ссылке (что в любом темплейте) вверху профиля — вызов сортировки, по которой выводились бы все пользовователи, которые принадлежат к данной группе (в данном случае "Писатели" или "Пользователи")? (Если делать разные группы на сайте, необходимая фишка получается)

По идее как в общем списке сайт.ру/users выводить список юзеров группы, только показываются только те, кто в данной группе ?

Буду благодарен за любую реальную подсказку по поводу вызова(использования) (функции\запроса) по группам пользователей.
#2 28 августа 2010 в 20:14
1) В шаблоне com_users_profile.tpl поправим вывод группы пользователя. Для этого поменяем статический текст на ссылку.

Вместо строки:
  1. {if $cfg.showgroup}<div class="usr_group" style="float:right">{$usr.grp}</div>{/if}
Напишем:
  1. {if $cfg.showgroup}<div class="usr_group" style="float:right"><a href="group{$usr.group_id}">{$usr.grp}</a></div>{/if}
2) Поправим Файлcomponents\users\router.php

После строчек
  1. //RewriteRule ^users/hobby/(.*)$ /index.php?view=users&do=hobby&hobby=$1
  2. $routes[] = array(
  3. '_uri' => '/^users\/hobby\/(.+)$/i',
  4. 'do' => 'hobby',
  5. 1 => 'hobby'
  6. );
Напишем новое правило:

  1. //RewriteRule ^users/group([0-9]*).html$ /index.php?view=users&do=group&group_id=$1
  2. $routes[] = array(
  3. '_uri' => '/^users\/group([0-9]+)$/i',
  4. 'do' => 'group',
  5. 1 => 'group_id'
  6. );
  7.  
3) Ну и в заключение в components\users\frontend.php

перед:

  1. /////////////////////////////// SEARCH BY CITY ///////
  2. if ($do=='city'){
  3. .....
  4. ....
  5. ......
  6. }
  7.  
напишем:

  1. /////////////////////////////// SEARCH BY GROUP //////////////////////////////////
  2. if ($do=='group'){
  3.  
  4. $group_id = $inCore->request('group_id', 'int');
  5.  
  6. $querysql = "SELECT u.*, p.*, u.id as id, u.regdate as fregdate, u.logdate as flogdate
  7. FROM cms_users u, cms_user_profiles p
  8. WHERE u.is_locked = 0 AND p.user_id = u.id AND u.group_id = $group_id AND u.is_deleted = 0
  9. ";
  10. $sql = "SELECT title FROM cms_user_groups WHERE id = $group_id LIMIT 1";
  11. $result = $inDB->query($sql) ;
  12.  
  13. if ($inDB->num_rows($result)){
  14. $group = $inDB->fetch_assoc($result);
  15. $querymsg = '<div class="con_description"><strong>Поиск по группе: </strong> '.$group['title'].' (<a href="/users/all.html">'.$_LANG['CANCEL_SEARCH'].'</a>)</div>';
  16. }
  17.  
  18. $do = 'view';
  19.  
  20. }
  21.  
Теперь нажав на ссылку-название группы в профиле пользователя нас перенесет на страницу поиска пользователей, где поиск будет именно по группе.

Вот. Как-то так. На сколько я понял суть вопроса…
#3 2 сентября 2010 в 20:50
Александр, большое спасибо! То самое что нужно было.

2Админы: мб если не сложно, можно включить в офф. релиз такую сортировку? имхо оч. удобно для пользователей, если делать групп больше, чем юзеры-модеры-админы
#4 2 сентября 2010 в 21:34

Александр, большое спасибо! То самое что нужно было.


Еще одно спасибо laugh

Так скоро разбогатею zst
#5 2 сентября 2010 в 22:03

2Админы: мб если не сложно, можно включить в офф. релиз такую сортировку?

L.B.Griffin
Да что уж там, давайте вообще все включим — все хаки, модули в официальную сборку. Чтоб прямо сразу скачал и опа нате вам сайт.

Невозможно сделать CMS, угодив всем. Любой КОНКРЕТНЫЙ проект требует СВОЕЙ доработки — иногда большой, а иногда и не очень. Не вижу смысла включать данный хак в оф релиз. При наличии базовых знаний и желания таких сортировок можно сделать много, как видите это совсем не сложно. v
#6 12 октября 2011 в 18:33
Fuze
Вот вот, а ещё всевозможный контент, что бы потом не парится с написанием, так-же все которые на данный момент есть шаблоны, с всевозможными вариантами.
#7 26 декабря 2011 в 14:46
не работает на 1.9
#8 1 июня 2014 в 04:59
Хорошо было бы под 1.10.3
#9 1 июня 2014 в 11:35
Поддерживаю, под 1.10.3 было бы круто)
#10 3 июня 2014 в 14:11
Может быть попробовать сделать так что бы вместо "Интересы" было выбор "Групп". Потому что пункт "Интересы" уже есть в поиске. Но наверное это даже сложнее)
#11 3 июня 2014 в 14:30
Александр, ну где же вы?
#12 15 июня 2014 в 00:56
По многочисленным просьбам Доротеи, набросал данный хак для 1.10.3. Глянуть можно здесь логин test пароль 123456.
В профиле ссылка "группы".Файлы здесь, не забываем подключить файл menu_pols.css.
#13 15 июня 2014 в 01:01


По многочисленным просьбам Доротеи, набросал данный хак для 1.10.3. Глянуть можно здесь логин test пароль 123456.
В профиле ссылка "группы".Файлы здесь, не забываем подключить файл menu_pols.css.

Lora

Я обратилась к Fuze по поводу добавление данного "хака" и ещё мелких дополнений в версию 1.10.4) Так что вы внесли свой вклад vи скоро увидите свой труд
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.