Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Просмотр секций

00 голосов
7
Здравствуйте.
Есть тип инфоблока, в нем несколько блоков, в каждом блоке есть один раздел. Нижеприведенный скрипт проходится по каждому блоку и возвращает список элементов из секции. Проблема в том, что корректно работает только когда залогинишься под админом, а иначе выводит все элементы.

Код
// выбираем все инфоблоки нужного типа
$res = CIBlockElement::GetList(array("created"=>"DESC"), array('IBLOCK_TYPE' => 'FM_projects',
                                                          'INCLUDE_SUBSECTIONS' => 'Y',
                                                           'SECTION_ID' => 0));
while($ar = $res->Fetch())
{
   // находим ид раздела
   $res2 = CIBlockSection::GetList(array(), array('IBLOCK_TYPE' => 'FM_projects', 'IBLOCK_ID' => $ar['IBLOCK_ID']));
   $sect = $res2->GetNext();

   // берем элементы раздела
   $res2 = CIBlockElement::GetList(array("created"=>"DESC"), array('SECTION_ID' => $sect['ID']));
   while($job = $res2->GetNext()) {
      echo '<pre>'; print_r($job); echo '</pre>';
   }
}


Пытаясь понять в чем дело выяснил, что когда авторизован не как админ (либо не авторизован вообще), переменная $sect['ID'] оказывается пустой. Быть может проблема в правах доступа?
спросил 28 Июль, 13 от Kara2 (220 баллов)

7 Ответы

00 голосов
Up
ответил 28 Июль, 13 от Kara2 (220 баллов)
00 голосов
Кто знает?
ответил 24 Сен, 13 от Kara2 (220 баллов)
00 голосов
Обнаружил что не только эта конкретная секция, а вообще все разделы не доступны никакой из групп пользователей кроме администратора. Т.е. просто не возвращается id секции, когда не под админом.
Получаем [IBLOCK_SECTION_ID] => null
ответил 24 Дек, 13 от Kara2 (220 баллов)
00 голосов
Права доступа на инфоблок проверили?
ответил 09 Апр, 14 от Pomnep (13,960 баллов)
00 голосов
Спасибо, пошарился в настройках - помогло. Но у меня будет много инфоблоков внутри одного типа, и они будут создаваться скриптом. Вопрос, можно ли задать права для типа инфоблоков, чтобы они распространялись на все инфоблоки? Или какой ключ/значение указать в массиве настроек при создании инфоблока скриптом, чтобы выставлять права на этом этапе? Т.к. вручную проставлять права не будет возможным.
ответил 02 Авг, 14 от Kara2 (220 баллов)
00 голосов
http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblock/add.php

Код
Кроме того, с помощью поля "GROUP_ID", значением которого должен быть массив соответствий кодов групп правам доступа, можно установить права для разных групп на доступ к информационному блоку(см. CIBlock::SetPermission()).
Если задано поле "FIELDS", то будут выполнены настройки полей инфоблока (см. CIBlock::SetFields). 
ответил 06 Дек, 14 от NitroGeN (2,840 баллов)
00 голосов
Спасибо, под конец рабочего дня уже плохо соображаю, не смог сам обнаружить
ответил 29 Март, 15 от Kara2 (220 баллов)

Похожие вопросы

0 голосов
0 ответов
спросил 01 Июнь, 13 от Kara2 (220 баллов)
0 голосов
0 ответов
спросил 07 Дек, 13 от Kania (5,180 баллов)
0 голосов
1 ответ
0 голосов
1 ответ