Альтернатива группам пользователей в Битрикс

Требуется, чтобы инфоблок выполнял не типичную роль, то есть не выводил информацию для отображения. В записях инфоблока - 3 подраздела, в каждом подразделе - много записей с ФИО и данными сотрудников / партнеров.

Есть статичный html код с тарифами и текстом. Но, этот код не единый для всех. Нужно чтобы не требовалось создавать группы пользователей с правами или в самом инфоблоке права устанавливать, а нужно чтобы записи в подразделах ИБ и были условиями вывода данных. То есть, те люди, которые в подразделе ИБ 1 - видят html код №1, кто подразделе ИБ 2 - видят html код №2.

То есть записи в инфоблоке являются ключом вывода информации, как группы в битриксе. А сейчас я нашел подобные условия вывода только по ID User и группе, а мне нужно как-то для ИБ такую опцию сделать ))


Ответы (1 шт):

Автор решения: Talleyran
$currentUserId = CUser::GetID(); //id текущего залогиненого юзера
$IBLOCK_ID = 123; //id вашего инфоблока
$arFilter1 = array( "IBLOCK_ID" => $IBLOCK_ID, "PROPERTY_WORKER" => $currentUserId);
$arFilter2 = array( "IBLOCK_ID" => $IBLOCK_ID, "PROPERTY_PARTNER" => $currentUserId);
//где WORKER и PARTNER - имена свойств, где лежат юзеры для первого и второго случаев соответственно
$first = CIBlockElement::GetList(Array("SORT" => "ASC"), $arFilter1, [], false, Array());
$second = CIBlockElement::GetList(Array("SORT" => "ASC"), $arFilter2, [], false, Array());

Если 3-м параметром (arGroupBy) в метод GetList подать пустой массив, то $first и $second будут содержать количество раз, которые пользователь встречается в инфоблоке в первом и втором столбце соответственно. Если оно больше нуля, то право смотреть есть.

<?php if ($first > 0):>
   <p>я секретный html</p>
<?php endif; ?>

Для второго аналогично.

→ Ссылка