Телеграм: @camouf_ru Почта: mihail@bazarow.ru

Регистрация пользователя в определенную группу сайта на Битрикс

Просмотров: 22042

Достаточно часто требуется регистрировать пользователя в определенную группу, в зависимости от того какую форму регистрации прошел пользователь. Это достаточно легко проделать с помощью события OnAfterUserAddHandler.

Итак, пример реализации данного функционала на конкретном сайте: Имеем сайт медицинского центра, на котором могут регистрироваться как врачи, для добавления себя в базу врачей России, так и обычные пользователи, которые регистрируются для просмотра и использования форума на сайте.

С простыми пользователями все понятно и стандартно, регистрируются прямо на форуме и автоматически попадают в группу "Зарегистрированные пользователи"

С врачами чуть сложнее: Для начала создаем для них группу: "Врачи эндокринологи"

<

В итоге получаем группу с ID15 (в моем случае, у вас будет другой ID)

Затем создаем новое пользовательское свойство с настройками как на cкрине. Далее, благодаря этому полю, будем заносить пользователя в нужную группу

Самое важное здесь- это выставить значение по умолчанию, абсолютно любое, главное не пустое. так же не плохо сделать обязательным (на скрине я этот момент упустил)

Выводим стандартную форму регистрации:

Далее, создаем на сайте новый раздел или страницу, на которой будут регистрироваться врачи. например /docsauth/ и вытаскиваем на нее компонент "Настраиваемая регистрация" который лежит в папке Служебные - User - Настраиваемая регистрация

Переходим к ее настройкам и выставляем все как угодно, как того требует специфика вашего сайта, но самое главное: выбираем наше пользовательское поле, в моем случае UF_BAZA

Сохраняемся. Осталось только навесить обработчик, благодаря которому система будет знать, что пользователь зарегистрировавшийся именно через эту форму, будет автоматом добавляться в группу с ID-15

Для этого открываем файл /корень-сайта/bitrix/php_intarface/init.php если его нет, то просто создаете вручную. И в него добавляем следующее:

<? 
   AddEventHandler("main", "OnAfterUserAdd", "OnAfterUserAddHandler"); 
   function OnAfterUserAddHandler(&$arFields) 
   { 
     if($arFields["ID"] > 0) 
     { 
       if(strlen($arFields["UF_BAZA"]) > 0)  //Если поле UF_BAZA заполнено 
       { 
         $arGroups = CUser::GetUserGroup($arFields["ID"]); 
         $arGroups[] = 15; //То добаляем пользователя в группу c ID15 
         CUser::SetUserGroup($arFields["ID"], $arGroups); 
       } 
       else 
       { 
         $arGroups = CUser::GetUserGroup($arFields["ID"]); 
         $arGroups[] = 5; //Иначе в группу c ID5 
         CUser::SetUserGroup($arFields["ID"], $arGroups); 
       } 
     } 
   } 
?>

В общем-то все, можно проверять в деле.

Регистрация в зависимости от сайта при многосайтовой конфигурации

Все тоже самое можно проделать, если нужно регистрировать пользователя в определенную группу, в зависимости от сайта на котором он эту процедуру прошел. При этом пользовательские поля создавать не нужно, достаточно знать ID-сайта и в init.php вписать следующее:

<?
   AddEventHandler("main", "OnBeforeUserRegister", "OnBeforeUserRegisterHandler"); 
   // создаем обработчик события "OnBeforeUserRegister" 
   function OnBeforeUserRegisterHandler(&$arFields) 
   { 
     // если пользователь регистрируется на сайте s1 
     if(SITE_ID=="s1") 
     { 
       // добавляем его в группу с id=5 
       $arFields["GROUP_ID"][] = 5; 
     } 
     elseif(SITE_ID=="s2") 
     { 
       // добавляем его в группу с id=6 
       $arFields["GROUP_ID"][] = 6; 
     } 
} 
?>
Максим 02.04.2016
добрый день.
а как сделать чтобы выбор группы зависел от выбора ее из списка?
пробовал так:
Код
<? 
AddEventHandler("main", "OnAfterUserAdd", "OnAfterUserAddHandler"); 
function OnAfterUserAddHandler(&$arFields) 
   { 
   if($arFields["ID"] > 0) 
      { 
      if(strlen($arFields["UF_BAZA"]) == 4)  
         { 
         $arGroups = CUser::GetUserGroup($arFields["ID"]); 
         $arGroups[] = 12; //То добаляем пользователя в группу c ID12 
         CUser::SetUserGroup($arFields["ID"], $arGroups); 
         } 
         elseif (strlen($arFields["UF_REG"]) == 5)
         {
         $arGroups = CUser::GetUserGroup($arFields["ID"]); 
         $arGroups[] = 13; //То добаляем пользователя в группу c ID13 
         CUser::SetUserGroup($arFields["ID"], $arGroups);
         }
         elseif (strlen($arFields["UF_REG"]) == 6)
         {
         $arGroups = CUser::GetUserGroup($arFields["ID"]); 
         $arGroups[] = 14; 
         CUser::SetUserGroup($arFields["ID"], $arGroups);
         }
      else
         { 
         $arGroups = CUser::GetUserGroup($arFields["ID"]); 
         $arGroups[] = 8; //Иначе в группу c ID8 
         CUser::SetUserGroup($arFields["ID"], $arGroups); 
         } 
      } 
   } 
?> 
 
не силен в программировании, поэтому не удивлюсь если в корне не правильно написал.
Но есть один момент. Ваш код при вставке его в файл init.php делает так, что перестает отображаться капча и нельзя сделать полное тестирование системы (может и еще что ...) Зато если вставлять вариант при многосайтовости, то такой проблемы не возникает.
помогите пожалуйста решить эти проблемы.
Александр Белоусов 25.02.2019
Михаил, привет. В видео вы говорили что приложите файл как вы сверстали форму регистрации. Где можно посмотреть? В частности меня интересует как скрыли пользовательское поле..Благодарю за полезный контент

Записная книжка разработчика

Примерно с 2013-го года пишу заметки по разработке сайтов на Битрикс.
Вы можете задавать уточняющие вопросы в комментариях- отвечаю или дополняю заметки по возможности.

Получение доступа к железу устройства из Битрикс мобильное приложение Просмотров: 5573 Документация к мобильному приложению 1С-Битрикс очень куцая. В основном описывает функцион... Заполнить коэффициент единицы измерения (MEASURE_RATIO) из свойства э... Просмотров: 5694 Задачка: Каталог наполняется из 1С, но 1С не передает коэффициент единицы измерения (особе... Дополнительные картинки в новостях Битрикс, почти фотогалерея. Просмотров: 48000 Частенько стоит задача, по мимо стандартных "Картинка для анонса" и "Деталь... Изменить размер картинок на лету в битрикс Просмотров: 46732 Встала задачка: на собственном сайте, уменьшить размер превьюшек картинок у анонсов раздел... Ссылки для добавления и удаления товара из сравнения в Битрикс Просмотров: 8206 Просто оставляю это здесь, вставка ссылок на добавление и удаление товара из сравнения, ес... Очистка корзины в 1С-Битрикс одним нажатием Просмотров: 27711 В стандартной корзине Битрикс не хватает кнопки для полной очистки корзины одним нажатием... Вывести свойство отдельно ото всех или исключить из всех Просмотров: 6986 Иногда, на сайте, под управлением 1С-Битрикс, нужно вывести какое-то конкретное свойство о... Умный фильтр во всплывающей панели на мобильных. Просмотров: 1412 Шаблон умного фильтра в Битриксе достаточно сложный, с точки зрения верстки и не очень кра... Вывести производителей на сайте с отбором его товаров из каталога Просмотров: 18190 Достаточно частая задачка для каталога или интернет-магазина: вывести список производителе... Время на БД и веб сервере отличается на 3600 секунд, тест Битрикс Просмотров: 15279 Достаточно часто, при проверке параметров системы, в Битрикс, можно увидеть одну из ошибок... Добавление и удаление из сравнения на AJAX: Битрикс Просмотров: 17646 Рецепт лежал у меня в закромах, почти о нем и забыл, но тут подвернулся под руку- решил оп... Сниппеты типографики bootstrap, для Битрикс Просмотров: 7575 Если вы подключили bootstrap к своему сайту, или сверстали весь шаблон, подключив bootstra... Дополнительные опции/услуги, добавляемые в корзину, в карточке товаро... Просмотров: 278 Задача: в детальной карточке товара сделать возможность добавления услуги или опции, при д... Заполнить картинки разделов каталога из картинок товаров Просмотров: 324 Задача: в каталоге, разделы и подразделы выводятся в виде плитки над товарами, с картинкам... Снять ограничение на количество символов в комментарии к заказу магаз... Просмотров: 11506 Как многим известно, в интернет-магазине на Битрикс имеется ограничение на количество симв... Пункты меню из разделов инфоблока Битрикс Просмотров: 90591 В принципе это стандартная возможность системы управления битрикс, но почему-то часто спра... Показать пользователю накопительную скидку за все сделанные заказы, и... Просмотров: 1736 Задача: показать, текущему авторизованному, пользователю сумму всех выполненных заказов и ... Определить местоположение пользователя и показать на карте Просмотров: 3253 Задача определить местоположение текущего пользователя и показать его на карте, с меткой. ... Настройка выгрузки товаров в Яндекс Маркет с сайта Битрикс Просмотров: 36654 Настройка выгрузки в Яндекс маркет в формате yml, выполняется достаточно просто, кроме одн... Создание скидки на общую сумму покупки в Битрикс корзине Просмотров: 26907 Функционал интернет-магазина, работающего под управлением 1С Битрикс, позволяет задавать м...