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

  
Медаль
Сообщений: 150
В каждом профиле наверху текстом указывается группа, к которой пользователь принадлежит. Например "Писатели" или "Пользователи".

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

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

Буду благодарен за любую реальную подсказку по поводу вызова(использования) (функции\запроса) по группам пользователей.
Редактировалось: 3 раз (Последний: 22 августа 2010 в 20:20)
VPS от 7.65$ - Включен ISP Manager, 256Ram, 500Mhz CPU и 5Gb - использую уже почти два года.
МедальМедаль за отзывчивостьКубок зрительских симпатий
Сообщений: 437
1) В шаблоне com_users_profile.tpl поправим вывод группы пользователя. Для этого поменяем статический текст на ссылку.

Вместо строки:
Код PHP:
   {if $cfg.showgroup}<div class="usr_group" style="float:right">{$usr.grp}</div>{/if}
Напишем:
Код PHP:
   {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

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

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

перед:

Код PHP:
/////////////////////////////// SEARCH BY CITY ///////
if ($do=='city'){
.....
....
......
}
напишем:

Код PHP:
/////////////////////////////// SEARCH BY GROUP //////////////////////////////////
if ($do=='group'){

	$group_id = $inCore->request('group_id', 'int');

	$querysql = "SELECT u.*, p.*, u.id as id, u.regdate as fregdate, u.logdate as flogdate
				FROM cms_users u, cms_user_profiles p
				WHERE u.is_locked = 0 AND p.user_id = u.id AND u.group_id = $group_id AND u.is_deleted = 0
				";
	$sql = 	"SELECT title FROM cms_user_groups	WHERE id = $group_id LIMIT 1";		
	$result = $inDB->query($sql) ;

	if ($inDB->num_rows($result)){
	$group = $inDB->fetch_assoc($result);
	$querymsg = '<div class="con_description"><strong>Поиск по группе: </strong> '.$group['title'].' (<a href="/users/all.html">'.$_LANG['CANCEL_SEARCH'].'</a>)</div>';
	}
	
	$do = 'view';

}
Теперь нажав на ссылку-название группы в профиле пользователя нас перенесет на страницу поиска пользователей, где поиск будет именно по группе.

Вот. Как-то так. На сколько я понял суть вопроса...
Сообщений: 0
Медаль
Сообщений: 150
Александр, большое спасибо! То самое что нужно было.

2Админы: мб если не сложно, можно включить в офф. релиз такую сортировку? имхо оч. удобно для пользователей, если делать групп больше, чем юзеры-модеры-админы
VPS от 7.65$ - Включен ISP Manager, 256Ram, 500Mhz CPU и 5Gb - использую уже почти два года.
МедальМедаль за отзывчивостьКубок зрительских симпатий
Сообщений: 437
Александр, большое спасибо! То самое что нужно было.

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

Так скоро разбогатею zst
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1779
L.B.Griffin:
2Админы: мб если не сложно, можно включить в офф. релиз такую сортировку?
Да что уж там, давайте вообще все включим - все хаки, модули в официальную сборку. Чтоб прямо сразу скачал и опа нате вам сайт.

Невозможно сделать CMS, угодив всем. Любой КОНКРЕТНЫЙ проект требует СВОЕЙ доработки - иногда большой, а иногда и не очень. Не вижу смысла включать данный хак в оф релиз. При наличии базовых знаний и желания таких сортировок можно сделать много, как видите это совсем не сложно. v
видеохостинг на базе InstantCms
Сообщений: 0
Отличная штука!!!! Автору сенкс большой!!!
И в продолжении развития темы... А можно-ли сделать так, что бы при регистрации пользователь сам выбирал в какой группе ему быть. Естественно, что про админство и модераторство речи не идет. Допустим, создаем несколько групп: футболисты, хоккеисты, теннисисты.... болельщики. Они "открыты в доступе", у каждого свои привилегии. А при регистрации пользователь сам выбирает с кем ему водиться. И таким образом болельщикам очень легко будет отыскать нужное. v
Сообщений: 0
Глубоко извиняюсь перед Александром. Поиск никто не отменял, и, представьте, нашел ответ на вопрос выше изложенный, написанный всё тем же Александром. Спасибо.
Сообщений: 42
Fuze:
Вот вот, а ещё всевозможный контент, что бы потом не парится с написанием, так-же все которые на данный момент есть шаблоны, с всевозможными вариантами.
Грамотно и умело поставленный вопрос позволяет получить всю необходимую информацию

Если тебе не нравится что я пишу-закрой глаза, а лучше свой рот!
Медаль
Сообщений: 257
не работает на 1.9
В начало страницы 
|
Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.