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

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

Достаточно часто, при создании сайта на битрикс нужно вывести в шаблон или компонент, некую информацию, доступную только для авторизованного пользователя. Например поздравить его (пользователя) со входом или поблагодарить за возвращение. В самом простом случае вывести кнопку "Выйти". Для этого можно воспользоваться 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;?>  
Петр 31.05.2024
Спасибо за примеры!

Как выделить авторизованного пользователя в списке?
Например, есть список пользователей привязанных к элементу инфоблока (компонент Новости), мы их выводим, получаем все нужные поля, а как указать какой из этих пользователей сейчас на сайте (Онлайн)? Например к имени добавить слово Онлайн.

Нигде не нашел подобных примеров.
Михаил Базаров 01.06.2024
C помощью метода CUser::IsOnLine
Код
if (CUser::IsOnLine(СЮДА_ID_ПОЛЬЗОВАТЕЛЯ)) {
    echo 'На сайте';
} else {
   echo 'Не на сайте';
}