Декабрь 1, 2017
Выборка разделов инфоблока средствами класса "\Bitrix\Iblock\SectionTable".
Простой вариант без выборки значений пользовательских свойств, выборка корневых разделов инфоблока с идентификатором в переменной $IBLOCK_ID:
Выборка подразделов раздела с идентификатором в переменной $SECTION_ID, инфоблока c $IBLOCK_ID, включая значение пользовательского свойства "UF_TEXT", учитывая активность родительских разделов:
$entity = \Bitrix\Iblock\Model\Section::compileEntityByIblock($IBLOCK_ID);
$rsSection = $entity::getList(array(
"filter" => array(
"IBLOCK_ID" => $IBLOCK_ID,
"IBLOCK_SECTION_ID" => $SECTION_ID,
"ACTIVE" => "Y",
"GLOBAL_ACTIVE" => "Y"
),
"select" => array("UF_TEXT"),
));
while($arSection=$rsSection->Fetch())
{
print_r($arSection);
}
Получение массива полей раздела с идентификатором в переменной $SECTION_ID одной строкой с использованием shorthand-функции getById:
Выборка активных разделов инфоблока с идентификатором в $IBLOCK_ID, отсортированный для построения дерева разделов:
$rsSection = \Bitrix\Iblock\SectionTable::getList(array(
'order' => array('LEFT_MARGIN'=>'ASC'),
'filter' => array(
'IBLOCK_ID' => $IBLOCK_ID,
'ACTIVE' => 'Y',
'GLOBAL_ACTIVE' => 'Y',
),
'select' => array(
'ID',
'NAME',
'DEPTH_LEVEL',
),
));
while ($arSection=$rsSection->fetch())
{
print_r($arSection);
}
Выборка трех случайных активных разделов уровня 1 инфоблока с идентификатором в $IBLOCK_ID, получаем название раздела, а также название родительского раздела:
$q = new \Bitrix\Main\Entity\Query(Bitrix\Iblock\SectionTable::getEntity());
$q
->registerRuntimeField(
'RAND', array('data_type' => 'float', 'expression' => array('RAND()'))
)
->setOrder(array('RAND' => 'ASC'))
->setSelect(array(
'ID',
'IBLOCK_ID',
'NAME',
'PARENT_SECTION_NAME'=>'PARENT_SECTION.NAME',
))
->setFilter(array(
'ACTIVE' => 'Y',
'GLOBAL_ACTIVE' => 'Y',
'IBLOCK_ID' => $IBLOCK_ID,
'DEPTH_LEVEL' => 1,
))
->setLimit(3);
$rsSection = $q->exec();
while ($arSection=$rsSection->fetch())
{
print_r($arSection);
}
Выборка всех активных разделов инфоблока с идентификатором в переменной $IBLOCK_ID с получением имени и фамилии создавшего и изменившего раздел пользователей:
$rsSection = \Bitrix\Iblock\SectionTable::getList(array(
'filter' => array(
'IBLOCK_ID' => $IBLOCK_ID,
'ACTIVE' => 'Y',
'GLOBAL_ACTIVE' => 'Y',
),
'select' => array(
'ID',
'NAME',
'CREATED_USER_NAME'=>'CREATED_BY_USER.NAME',
'CREATED_USER_LAST_NAME'=>'CREATED_BY_USER.LAST_NAME',
'MODIFIED_USER_NAME'=>'MODIFIED_BY_USER.NAME',
'MODIFIED_USER_LAST_NAME'=>'MODIFIED_BY_USER.LAST_NAME',
),
));
while ($arSection=$rsSection->fetch())
{
print_r($arSection);
}
Выборка активных разделов инфоблока с идентификатором в $IBLOCK_ID с получением названия инфоблока и шаблона пути к разделу:
$rsSection = \Bitrix\Iblock\SectionTable::getList(array(
'order' => array('LEFT_MARGIN'=>'ASC'),
'filter' => array(
'IBLOCK_ID' => $IBLOCK_ID,
'ACTIVE' => 'Y',
'GLOBAL_ACTIVE' => 'Y',
),
'select' => array(
'ID',
'NAME',
'IBLOCK_NAME' => 'IBLOCK.NAME',
'IBLOCK_SECTION_PAGE_URL' => 'IBLOCK.SECTION_PAGE_URL',
),
));
while ($arSection=$rsSection->fetch())
{
print_r($arSection);
}