Вывести имя пользователя добавившего элемент инфоблока в Битрикс

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

Иногда, необходимо вывести имя пользователя добавившего элемент инфоблока. Например, автора новости или автора объявления на информационной доске объявлений под управлением 1С Битрикс. Сделать это достаточно просто, хотя и не сразу приходит в голову.

Иногда, необходимо вывести имя пользователя добавившего элемент инфоблока. Например автора новости или автора объявления на информационной доске объявлений под управлением 1С Битрикс. Сделать это достаточно просто, хотя и не сразу приходит в голову.

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

В нужном месте шаблона компонента вставляем:

$create_user=$arResult["CREATED_BY"]; //ловим ID создателя 
$GLOBALS['users'] = array("CREATED_BY" => $create_user); 
$userid= $create_user; //подставляем пойманый ID 
$rsUser = CUser::GetByID($userid); 
$arUser = $rsUser->Fetch(); 
echo $arUser["NAME"]; //выводим имя 

Конечно, можно проделать это с помощью компонента "Имя пользователя с титулом" передав в него ID создателя таким же макаром. 

Вывести дополнительные данные об авторе элемента инфоблока

Чтобы вывести больше информации о пользователе, можно воспользоваться вот этим:


<? 
  $create_user=$arResult["CREATED_BY"]; 
  $GLOBALS['users'] = array("CREATED_BY" => $create_user); 
  $userid= $create_user; 
  $rsUser = CUser::GetByID($userid); 
  $arUser = $rsUser->Fetch(); 
?> 
<a href="/users/<? echo $create_user;?>/" > 
<? echo $arUser["NAME"];?> 
</a> 
<? echo $arUser["EMAIL"];?> 
<? echo $arUser["WORK_COMPANY"];?> 
<? echo CFile::ShowImage($arUser['PERSONAL_PHOTO'], 98, 98, 'border=0', '', true); ?> 

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

Если пользователь авторизован и его логин совпадает с логином автора новости

Если нужно показать ссылку на редактирование материала, если текущий авторизованный пользователь является автором новости/ статьи/ элемента


<?
global $USER;
if($USER->IsAuthorized()):
// Если логин текущего авторизованного пользователя 
// совпадает с логином владельца материала
// даем ему ссылку на редактирование
  $hoster = $arUser["LOGIN"];
  $nowUser = $USER->GetLogin();
  if($nowUser===$hoster):?>
      <a href="/personal/dobavlenie-retsepta/?edit=Y&CODE=<?=$arResult['ID']?>">
           Изменить материал
      </a>
  <?endif;?>
<?endif;?>
Алексей 08.07.2014
Это пример для шаблона элемента? А как сделать то же самое, но в списке элементов инфоблока?
Сергей 28.11.2014
Присоединяюсь к вопросу выше! Как внедрить это решение в шаблон news.list?
Михаил Базаров 29.11.2014
Вместо arResult  вставить arItem
Сергей 29.11.2014
Спасибо огромное! Вы очень помогли! :)
Андрей 24.05.2015
Михаил, подскажите пожалуйста куда именно нужно вставить код, чтобы результат выводился в детальном описании новостей
Александр Николаев 26.09.2016
Здравствуйте, Михаил!
Не подскажите как можно в детальном шаблоне новости вывести ссылку по привязке пользователя на персональный кабинет.
Описание.
Изначально была задача привязать элемент справочника к другому инфоблоку каталогу это сделал, подключив компонент news.detail, bitrix:catalog.top и переменив ArrFilter я фильтрую элементы.
Вот теперь нужно сформировать ссылку на персональный кабинет по привязке пользователя из компонента news.detail.
Подскажите как это можно сделать пожалуйста.
Михаил Базаров 26.09.2016
Цитата
Александр Николаев пишет:
Здравствуйте, Михаил!
Не подскажите как можно в детальном шаблоне новости вывести ссылку по привязке пользователя на персональный кабинет.
Описание.
Изначально была задача привязать элемент справочника к другому инфоблоку каталогу это сделал, подключив компонент news.detail, bitrix:catalog.top и переменив ArrFilter я фильтрую элементы.
Вот теперь нужно сформировать ссылку на персональный кабинет по привязке пользователя из компонента news.detail.
Подскажите как это можно сделать пожалуйста.
Собственно ответ в самой заметке
Создаете раздел куда выводите всех пользователей, можно модулем форума, можно модулем социальной сети

И в шаблоне новости

Код
<? 
$create_user=$arResult["CREATED_BY"]; 
$GLOBALS['users'] = array("CREATED_BY" => $create_user); 
$userid= $create_user; 
$rsUser = CUser::GetByID($userid); 
$arUser = $rsUser->Fetch(); 
?> 

<a href="/users/<? echo $create_user;?>/" > 
 

где /users/ это раздел сайта со списком пользователей а <? echo $create_user;?> ник пользователя или можно <? echo $arUser['ID'];?> если ЧПУ по ID-шникам

Например, так работает у меня на сайте. Если кликните на форуме по имени любого пользователя, попадете на его страничку в социальной сети
https://camouf.ru/forum/forum1/4

PS: Поправочка. По имени почти любого пользователя, некоторые тут писали до того как я подключил модуль соц.сеть потому не у всех профили есть
Александр Николаев 27.09.2016
Михаил, спасибо что ответили мне но у меня не работают эти варианты  я уже перепробовал все.
Вот что у меня получилось http://prntscr.com/cmtu40
href="/users/ / путь пустой
Может я не совсем правильно объяснил свою задачу.

Есть сайт совместные покупки, стоит задача.
1) Сделать два ифоболока каталог товара и организаторы закупок
2) Привязать организатора Надежда к элементу каталога товара и вывести на страницу сайта все товары которые привязаны к организатору Надежде. ( Это я смог сделать ) http://prntscr.com/cmlk4h http://prntscr.com/cmlksk
3) Нужно привязать элемент организатора к пользователю по свойству привязка к пользователю  и на странице вывести ссылку на профиль организатора закупок, то есть если user-> клиент кликнет на ссылку http://prntscr.com/cmlquv организатора он должен попасть на профиль организатора, а не текущий пользователь.

Скрин инфоблока http://prntscr.com/cmlvb7
Александр Николаев 27.09.2016
Цитата
Александр Николаев пишет:
Михаил, спасибо что ответили мне но у меня не работают эти варианты я уже перепробовал все.
Вот что у меня получилось http://prntscr.com/cmtu40
href="/users/ / путь пустой
Может я не совсем правильно объяснил свою задачу.

Есть сайт совместные покупки, стоит задача.
1) Сделать два ифоболока каталог товара и организаторы закупок
2) Привязать организатора Надежда к элементу каталога товара и вывести на страницу сайта все товары которые привязаны к организатору Надежде. ( Это я смог сделать ) http://prntscr.com/cmlk4h http://prntscr.com/cmlksk
3) Нужно привязать элемент организатора к пользователю по свойству привязка к пользователю и на странице вывести ссылку на профиль организатора закупок, то есть если user-> клиент кликнет на ссылку http://prntscr.com/cmlquv организатора он должен попасть на профиль организатора, а не текущий пользователь.

Скрин инфоблока http://prntscr.com/cmlvb7
На странице сайта используется 2 простых компонента bitrix:news.detail http://prntscr.com/cmu2bd и bitrix:catalog.top http://prntscr.com/cmu2xo