Выборка разделов инфоблока

Декабрь 1, 2017

Теги: Инфоблоки, ORM

Выборка разделов инфоблока средствами класса "\Bitrix\Iblock\SectionTable".

Простой вариант без выборки значений пользовательских свойств, выборка корневых разделов инфоблока с идентификатором в переменной $IBLOCK_ID:


\Bitrix\Main\Loader::includeModule('iblock');


$rsSection = \Bitrix\Iblock\SectionTable::getList(array(
    
'filter' => array(
        
'IBLOCK_ID' => $IBLOCK_ID,
        
'DEPTH_LEVEL' => 1,
    ), 
    
'select' =>  array('ID','CODE','NAME'),
));

while (
$arSection=$rsSection->fetch()) 
{
    
print_r($arSection);
}

Выборка подразделов раздела с идентификатором в переменной $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
        
"SECTION_ID" => $SECTION_ID,
        
"ACTIVE" => "Y",
        
"GLOBAL_ACTIVE" => "Y"
    
),
    
"select" => array("UF_TEXT"),
));

while(
$arSection=$rsSection->Fetch())
{
    
print_r($arSection);
}

Получение массива полей раздела с идентификатором в переменной $SECTION_ID одной строкой с использованием shorthand-функции getById:


$arSection = \Bitrix\Iblock\SectionTable::getById($SECTION_ID)->fetch();

Выборка активных разделов инфоблока с идентификатором в $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);
}

← Переход к списку