Если делать 3 ИБ, то можно уйти от модификации кода компоненты.
Код |
---|
global $USER;
$arGroups = $USER->GetUserGroupArray(); |
этот код возвращает массив со списком групп, к которым принадлежит пользователь.
В моем случае я получил:
Код |
---|
Array
(
[0] => 2 //Неавторизованные пользователи
[1] => 1 //Администраторы (всемогущ :) )
[2] => 9 //Сотрудники техподдержки
) |
Идентификаторы групп смотрим: Рабочий стол > Настройки > Пользователи > Группы пользователей.
Ну и отсюда пляшем. Если решаем делать 3 ИБ, то тут все красиво, на странице, где хотите показывать новости вместо обычного вызова компоненты ставите необычное

:
Код |
---|
// Если пользователь в группе партнеров, допустим ИД группы 12
if (in_array(12, $arGroups)) {
$APPLICATION->IncludeComponent(
"bitrix:news.list", //нужный омпонент
'.default', //нужный шаблон
array(
//Массив нужных параметров, в этом случае
//здесь должен быть обязательно
//"IBLOCK_ID" => ID_ИБ_с_новостями_для_партнеров
),
);
}
// Если пользователь в группе диллеров, допустим ИД группы 13
elseif (in_array(13, $arGroups)) {
// то же самое, но с другими параметрами вызова компонента
//"IBLOCK_ID" => ID_ИБ_с_новостями_для_диллеров
}
// Для всех остальных
else{
// то же самое, но с другими параметрами вызова компонента
//"IBLOCK_ID" => ID_ИБ_с_новостями_для_юзеров
} |
Советую в этом случае на отдельной страничке настроить компоненты показа новостей для каждого случая через виз. редактор, а потом скопировать код вызова.
Если же решаем модифицировать компонент, то в коде компонента после
Код |
---|
//WHERE
$arFilter = array (
"IBLOCK_ID" => $arResult["ID"],
"IBLOCK_LID" => SITE_ID,
"ACTIVE" => "Y",
"ACTIVE_DATE" => "Y",
"CHECK_PERMISSIONS" => "Y",
); |
Добавляем
Код |
---|
// Если пользователь в группе партнеров, допустим ИД группы 12
if (in_array(12, $arGroups)) {
$arFilter["SECTION_ID"] = "1"; // Секция ИБ новостей с новостями для партнеров
}
// Если пользователь в группе диллеров, допустим ИД группы 13
elseif (in_array(13, $arGroups)) {
$arFilter["SECTION_ID"] = "2"; // Секция ИБ новостей с новостями для диллеров
}
// Для всех остальных
else{
$arFilter["SECTION_ID"] = "3"; // Секция ИБ новостей с новостями для всех остальных
} |