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

Если пользователь авторизован то... API Битрикс

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

Достаточно часто, при создании сайта на битрикс нужно вывести в шаблон или компонент, некую информацию, доступную только для авторизованного пользователя. Например поздравить его (пользователя) со входом или поблагодарить за возвращение. В самом простом случае вывести кнопку "Выйти". Для этого можно воспользоваться API Битрикс и классом CUser - класс для работы с пользователями

Используем метод IsAuthorized- авторизован ли пользователь

Использую простой пример. Задача: если пользователь авторизован нам нужно с ним поздороваться и показать простой баннер-картинку, если не авторизован показываем, в этом же месте, простой текст. Для этого в нужном месте шаблона сайта (там где предполагается показывать баннер) вставляем вот такую конструкцию:

<?if($USER->IsAuthorized()):?>
 <i>&mdash; Здраствуйте</i><br/> 
 <?=(CUser::GetFirstName())?CUser::GetFirstName():CUser::GetLogin()?><br/> 
 <img src="/путь_к_баннеру.png"/> 
 <?else:?> 
 У нас самый лучший и удобный сайт на свете 
 <?endif;?> 

Расшифровка:

<Если пользователь авторизован> 
 &mdash; Здраствуйте<br/> 
 < Имя или Логин (если нет имени) ><br/> 
 картинка баннер 
 <иначе> 
 У нас самый лучший и удобный сайт на свете 
 <?endif;?> 

Таким же образом вы можете комбинировать или использовать методы класса CUser, все они освещены в документации по Битрикс, во многих из них есть "живые" примеры использования CUser в документации

Например, вывести в любом месте сайта аватарку пользователя можно вот так:

<?
 if ($USER->IsAuthorized()) //Если пользователь авторизован 
 { 
 $rsUser = CUser::GetByID($USER->GetID()); //$USER->GetID() - получаем ID авторизованного пользователя и сразу же  его поля 
 $arUser = $rsUser->Fetch(); 
 $arResult["PERSONAL_PHOTO_HTML"] = CFile::ShowImage($arUser["PERSONAL_PHOTO"], 150, 150, "border=0", "", true); //$arUser["PERSONAL_PHOTO"] - тут находится id аватарки, здесь мы получим HTML-код для вывода нужного изображения 
 } 
 ?> 
 <?=$arResult["PERSONAL_PHOTO_HTML"]?> 

Успехов.

Михаил Базаров 18.12.2013
Если нужно показать что-то определенной группе пользователей. Например группа "Контент-редакторы" с ID = 4
Код
<?
   $arGroups = CUser::GetUserGroup($USER->GetID());
   for ($i=0; $i < count($arGroups); $i++) if ($arGroups[$i] == 4):
?> 
 
 текст или чего там собрались показывать 
 
<?endif;?>  
Nikita Androsov 27.09.2017
через этот метод также можно сделать перенаправление на нужную страницу после успешной авторизации ?)
а то что то не получилось разобраться с BACKURL.  
Михаил Базаров 27.09.2017
Цитата
Nikita Androsov написал:
через этот метод также можно сделать перенаправление на нужную страницу после успешной авторизации ?)
а то что то не получилось разобраться с BACKURL.  
Да, все просто)
Код
<?if(CUser::IsAuthorized()){
     header('Location: /');
}else{?> 
     Вызываем компонент авторизации
<?}?>  
Nikita Androsov 28.09.2017
Цитата
Михаил Базаров пишет:
Цитата
Nikita Androsov написал:
через этот метод также можно сделать перенаправление на нужную страницу после успешной авторизации ?)
а то что то не получилось разобраться с BACKURL.
Да, все просто)
Код
 <?if(CUser::IsAuthorized()){
     header('Location: /');
}else{?> 
     Вызываем компонент авторизации
<?}?>  
 
А можно как-то добавить условие, допустим пользователь авторизован и пренадлежит к группе с таким-то ID {что то выводим} иначе { выводим другое} ??  
Михаил Базаров 28.09.2017
Цитата
Nikita Androsov написал

А можно как-то добавить условие, допустим пользователь авторизован и пренадлежит к группе с таким-то ID {что то выводим} иначе { выводим другое} ??  
Ну так это выше уже есть
Код
<?
   $arGroups = CUser::GetUserGroup($USER->GetID());
   for ($i=0; $i < count($arGroups); $i++) if ($arGroups[$i] == 4): //Если текущий пользователь из 4-ой группы
?> 
 
 текст или чего там собрались показывать 
 
<?endif;?>  

Проверять на авторизацию не обязательно (лишний запрос на ровном месте)

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

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

Отключить поиск по описаниям товаров в Битрикс Просмотров: 11895 Иногда, нужно отключить поиск по описаниям анонсов и детальному описанию товаров, при разр... Адаптивное гамбургер меню для битрикс Просмотров: 15172 Заметка коротенькая, но решил оставить ее - так как самому часто нужно нечто подобное. В а... Создание скидки на общую сумму покупки в Битрикс корзине Просмотров: 28337 Функционал интернет-магазина, работающего под управлением 1С Битрикс, позволяет задавать м... Дополнительные опции/услуги, добавляемые в корзину, в карточке товаро... Просмотров: 1071 Задача: в детальной карточке товара сделать возможность добавления услуги или опции, при д... Вывести минимальную и максимальную цену в разделе каталога Битрикс. Просмотров: 3689 Что бы вывести минимальную и максимальную стоимость товаров, из каталога 1С-Битрикс, доста... Очистить брошенные корзины с помощью API 1С-Битрикс Просмотров: 1185 Задача: в интернет-магазине накапливается большое количество брошенных корзин, нужно их оч... Объединить отдельные поля ФИО в одно свойство при оформлении заказа. Просмотров: 1336 Пользователь, при оформлении заказа, заполняет три отдельных поля с фамилией, именем и отч... Сравнение двух типов цен для иммитации системы скидок, в Битрикс Просмотров: 6851 Встала задачка, иммититровать систему скидок в интернет магазине на Битрикс. Из 1С-УТ, на ... Добавление в избранное или отложенные, на AJAX из карточки товара Просмотров: 29256 В этой заметке рассакажу как добавлять товары в "Отложенные", для иммитации функционала "И... Умный фильтр только на последнем уровне разделов каталога. Просмотров: 11715 Если в разработаываемом магазине или в принципе в каталоге на Битрикс, вы выводите умный ф... Создать pdf файл из элемента инфоблока, дать скачать пользователю, по... Просмотров: 5365 Задача: при каждом посещении статьи, на сайте, нужно создавать pdf файл с ее содержимым и ... Установить остатки товара на складе из доступных остатков. Просмотров: 6266 Задача, заполнить остатки товаров, в 1С-Битрикс, из параметра "Доступное количество". Основные функции вывода в шаблонах Битрикс Просмотров: 158420 Знаю, что все их знают. Но иногда не бывает лишним собрать все самое используемое в одну к... Подключение jquery из ядра битрикс и объединение своих скриптов в оди... Просмотров: 20933 Если используете большое количество js скриптов на сайте. Например: фансибокс, всяческие г... Вывести все товары, с постраничной навигацией, из всех разделов инфоб... Просмотров: 29938 По сути, эта заметка, небольшой лайфхак. Достаточно часто нужно, в корне каталога, в ТОП-е... Отфильтровать товары бренда и вывести по разделам каталога Просмотров: 1660 Задача: на странице бренда, который выводится компонентом новостей, нужно показать все тов... Ajax форма обратной связи, реализация в битрикс Просмотров: 8704 Иногда, на сайте требуется создать форму обратной связи, которая будет писать все данные в... Как вывести картинки к разделам на базе _ext меню Просмотров: 7653 Просто для эстетической красоты, нужно вывести в меню разделов сайта картинки или иконки. ... Установка веб-сервера LAMP на ubuntu 20.04 LTS, оптимизированный под ... Просмотров: 12793 В последнее время, плотно пересел c macOS на ubuntu, и решил настроить себе полноценное ра... Вывести дату окончания скидки в карточке товара Просмотров: 4534 Если нужно вывести информацию о скидке в карточке товара, можно воспользоваться методом