Выбор группы при регистрации+показ контента в профиле для определенной группы+вывод определенных дан

+39
3.22K
Покопавшись на форумах, пересмотрев файлы движка и подключив логику пришел к элементарным решениям.

1.Выбор группы при регистрации:
Файл components/registration/frontend.php
после
  1. 148 $pass2 = cmsCore::request('pass2', 'str', '');
добавить
  1. 149 $group_id = cmsCore::request('group_id', 'int', 0);
После.Добавляем проверку чтобы не могли регистрироваться определенные группы, например админи($group_id == 1 || $group_id == 2, записываем номера запрещённых групп,1 и 2 приведены только для примера)
  1. if($group_id == 1 || $group_id == 2 ){unset($group_id);
  2. cmsCore::addSessionMessage($_LANG['WRONG_GROUP'], 'error'); $errors = true;}
в /languages/ru/components/registration.php добавить текст ошибки $_LANG['WRONG_GROUP'].
Далее там же в components/registration/frontend.php
вместо
  1. $item['group_id'] = $model->config['default_gid'];
вставить
  1. $item['group_id'] = $group_id;
Файл templates/ваш шаблон/registration.tpl
добавить
  1.  
  2. <tr>
  3. <td valign="top" class=""><strong>Кто вы:</strong></td>
  4. <td valign="top" class="">
  5. <select name="group_id">
  6. <option value="0">--- Выберите ваш статус ---</option>
  7. <option value="6">Персона</option>
  8. <option value="10">Компания</option>
  9. </select>
  10. </td>
  11. </tr>
  12.  
<option value="6"> это номер группы(6 и 10 это только пример).Прописываем нужный id группы.
2.Показ контента в профиле для определенной группы.Контент будет показываться в профиле только у одной группы людей:
Файл components/users/frontend.php
В секции //=====Просмотр профиля=====//
До
  1. $smarty->display('com_users_profile.tpl');
вставить
  1. $smarty->assign('is_group', $inUser->group_id);
Файл templates/ваш шаблон/com_users_profile.tpl

Вставить
  1. {if $is_group==2} Контент который будет показан только группе номер 2 {/if}
3.Вывод разных данных в профиле для разных групп.Можно определенной группе назначить разный дизайн профиля, позиции модулей в профиле и тд, подключаем фантазию.
Файл components/users/frontend.php
в той же секции //=====Просмотр профиля=====//
Ну скажем после // награды пользователя
добавить
  1. //Группа Пользователя
  2. $usr['group_id'] = $group_id;
Файл templates/ваш шаблон/com_users_profile.tpl
  1. {if $usr.group_id eq 1}<div style="назначаем любой нам нужный стиль">Ставим то что хотим выводить в профилях пользователей группы номер 1</div>{/if}
Вот пример разных профилей:
Example 1
Example 2
Example 3

Если нужно демо позже выложу
"А для какой версии?" = 1.10.1 :)
0
Петр Петр 11 лет назад #
Админы, поправьте шаблон, правый блок урезает слова...((
0
PrazdNik PrazdNik 11 лет назад #
Вы о чем? Где правый блок урезает слова?
0
Петр Петр 11 лет назад #
уже поправили однако
0
PrazdNik PrazdNik 11 лет назад #
Надо подумать как это можно использовать... Автору +
0
alexbabo alexbabo 11 лет назад #
В случае показа контента определенной группе,можно например для каждой группы в профиле создать позицию модуля только уникальную для этой группы и выводить рекламу специально для этой группы людей,группа автолюбители-реклама про авто,любители спорта реклама-спорт товары.А в случае вывода характеризующих данных опрделенной группы можно создать разные шаблоны для каждой группы,у людей обычный профиль у организации другой.Можно много разного придумать.
+3
PrazdNik PrazdNik 11 лет назад #
А можно наоборот, за плату, определенным группам убирать рекламу с их профиля.
0
alexbabo alexbabo 11 лет назад #
точно,хорошая идея
0
picaboo picaboo 11 лет назад #
id=1 - не админа ли мы регаем? :)
0
alexbabo alexbabo 11 лет назад #
у меня админ id=2,каждый выставляет номер той группы какая им нужна
+4
picaboo picaboo 11 лет назад #
<option value="1">Персона</option>

лучше в примере исправьте на другую группу. а то кто по глупости вставит как есть и будет у него куча "Персон" с доступом в админку
0
alexbabo alexbabo 11 лет назад #
поправил
0
lokanaft lokanaft 11 лет назад #
Зря, в системе есть проверки на соответствие user_id=1
+1
picaboo picaboo 11 лет назад #
проконсультируйте smile можно ли вообще запретить через эту форму подставить ид=1 ? сделать проверку и не пропускать с таким айди. Просто я сейчас поставил этот хак и подменил в запросе группу, в результате получил админа. не безопасно.:(
0
picaboo picaboo 11 лет назад #
$item['group_id'] = $group_id;
if $item['group_id'] = 1 ; { return false;}

не знаю как правильно :)
+1
picaboo picaboo 11 лет назад #
и еще модераторов надо тогда убирать, либо жестко прописать какие именно группы можно принять из шаблона
+1
alexbabo alexbabo 11 лет назад #
Сделал так:
после
Код PHP:
  1. $group_id = cmsCore::request('group_id', 'int', 0);
добавил проверку с выводом ошибки
Код PHP:
  1. if($group_id == 1 || $group_id == 2 ){unset($group_id);
  2. cmsCore::addSessionMessage($_LANG['WRONG_GROUP'], 'error'); $errors = true;}
в /languages/ru/components/registration.php добавить текст ошибки $_LANG['WRONG_GROUP'].
в принципе вместо ошибки можно добавить else{$group_id = 15;}и всех кто ц неправильным группы будет отправлять в группу 15.Проверьте как работает и отпишитесь

В жизни к не имел отношение PHP и програмированию ,а вот кажется учусь :)
0
lezginka.ru lezginka.ru 11 лет назад #
+
0
den4ik den4ik 11 лет назад #
А на 1.9 пойдет?
0
alexbabo alexbabo 11 лет назад #
Посмотрел 1.9,нет не подходит.Обновляться не думаете?
0
den4ik den4ik 11 лет назад #
Сильно много ядро ковырял, перейду на новую версию и все сотрется...
0
den4ik den4ik 11 лет назад #
Сильно много ядро ковырял, перейду на новую версию и все сотрется...
+1
Петр Петр 11 лет назад #
спасибо! Понадобилось! :)
0
Петр Петр 11 лет назад #
как теперь реализовать разные поля профиля для разных групп?
0
alexbabo alexbabo 11 лет назад #
Например?
0
Anton Bogoradov Anton Bogoradov 11 лет назад #
Тоже нужно такое, предположим.
Пользователь регистрируется в группе частное лицо и есму нужно вводить обычные параметры аська, фио, логин и т.д.
Пользователь регистрируется как организация тут бы лучше брать как минимум адрес, инн и т.п
0
alexbabo alexbabo 11 лет назад #
Думаю можно это приспособить к вашим нуждам Простая регистрация = больше пользователей,можно попробовать добавить мой хак туда,попробуйте.
0
Anton Bogoradov Anton Bogoradov 11 лет назад #
Думал сделать через необязательные поля тогда можно было бы в зависимости от выбранной группы показывать либо одно либо другое, но желательно сделать все поля обязательными к заполнению.
Понимаю что можно завуалировать (о какое слово знаю) и прописать что все акаунты проходят жёсткую модерацию и незаполненные будут удалятся но я на сайт лажу только если мне на мобильник придёт оповещение яндекс метрики что сайт лежит =)
+1
alexbabo alexbabo 11 лет назад #
Можно сделать и так, делаем обычную регистрацию с выбором группы ,в админке настраиваем регистрацию так чтобы после регистрации пользователь сращу переходил на страницу редактирования профиля , а там ужэ в зависимости от группы будут разные поля для заполнения
0
alexbabo alexbabo 11 лет назад #
Хотя можэт не сработает надо проверить
0
Anton Bogoradov Anton Bogoradov 11 лет назад #
Лучше-бы сразу но попробую вечерком, спасибо!
0
Петр Петр 11 лет назад #
нет такого, в инстанте нет такого функционала...
например у меня две группы на сайте: юристы и клиенты
естественно поля для заполнения будут разными...
+ еще нужна выборка в списке юзеров
0
alexbabo alexbabo 11 лет назад #
А модуль выводящий пользователей по группам подойдет?
0
Петр Петр 11 лет назад #
хозяин-барин :)
0
Петр Петр 11 лет назад #
0
Петр Петр 11 лет назад #
в файле frontend.php
две строчки
Код PHP:
  1. $pass2 = cmsCore::request('pass2', 'str', '');
не спутайте, ставить нужно после второй, иначе не будет работать
0
Петр Петр 11 лет назад #
Еще вопрос, как уже зарегистрированному пользователю (до установки) выбрать группу пользователей?
0
den4ik den4ik 11 лет назад #
а как выбрать выбрать группу уже после регистрации??
0
omarov omarov 11 лет назад #
Можно сделать так чтобы показывалось только 2 группы?
Это решение исключит нужду добавления вывода ошибки, и проверки нужной группы.
+2
Def Def 10 лет назад #
а на 1.10.3 как завести? или будет работать?
0
Def Def 10 лет назад #
еще интересно, как сделать в настроках профиля чтобы можно было юзерам указывать переход из одной группы в другую -из разрещшенных

Еще от автора

Адаптивный шаблон Sunny - InstantCMS 2 .Free
Адаптивный шаблон. Адаптивный слайдер,на мобильных устройставх перелистывается пальцем. С анимацией,позиции подгружаются по мере прокрутки страницы.
Модуль "Контент панель".Инстант 1.10.3-1.10.4
Вначале планировался простенький модуль делающий перелинковку статей по методу кольца в разделе. Но модуль разросся и оброс многими функциями.
Модуль который виден только в профиле.Инстант.1.10.4
По просьбе Доротея Всё неимоверно элементарно. Создаем копию шаблона module.tpl,с другим именем,в нашем случае module_user.tpl.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.