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

Модуль расширенного управления меню для битрикс

Апрель 13, 2020

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

Выборка инфоблоков, привязок инфоблоков к сайтам классы "\Bitrix\Iblock\IblockTable", "\Bitrix\Iblock\IblockSiteTable".

Выбрать все инфоблоки в системе:


$iblockResult \Bitrix\Iblock\IblockTable::getList();


while(
$iblock=$iblockResult->fetch())
{
    
print_r($iblock);
}

/* 
Array
(
    [ID] => 45
    [TIMESTAMP_X] => Bitrix\Main\Type\DateTime Object
        (
            [value:protected] => DateTime Object
                (
                    [date] => 2019-10-31 03:06:10.000000
                    [timezone_type] => 3
                    [timezone] => Europe/Moscow
                )

        )

    [IBLOCK_TYPE_ID] => banket
    [CODE] => 
    [NAME] => Отзывы
    [ACTIVE] => Y
    [SORT] => 500
    [LIST_PAGE_URL] => 
    [DETAIL_PAGE_URL] => 
    [SECTION_PAGE_URL] => 
    [CANONICAL_PAGE_URL] => 
    [PICTURE] => 
    [DESCRIPTION] => 
    [DESCRIPTION_TYPE] => text
    [XML_ID] => 
    [TMP_ID] => 
    [INDEX_ELEMENT] => Y
    [INDEX_SECTION] => Y
    [WORKFLOW] => N
    [BIZPROC] => N
    [SECTION_CHOOSER] => L
    [LIST_MODE] => 
    [RIGHTS_MODE] => S
    [SECTION_PROPERTY] => N
    [PROPERTY_INDEX] => N
    [VERSION] => 1
    [LAST_CONV_ELEMENT] => 0
    [SOCNET_GROUP_ID] => 
    [EDIT_FILE_BEFORE] => 
    [EDIT_FILE_AFTER] => 
)
Array
(
    [ID] => 44
    [TIMESTAMP_X] => Bitrix\Main\Type\DateTime Object
        (
            [value:protected] => DateTime Object
                (
                    [date] => 2019-10-31 02:31:13.000000
                    [timezone_type] => 3
                    [timezone] => Europe/Moscow
                )

        )

    [IBLOCK_TYPE_ID] => banket
    [CODE] => 
    [NAME] => Пространство для Вашего праздника
    [ACTIVE] => Y
    [SORT] => 500
    [LIST_PAGE_URL] => 
    [DETAIL_PAGE_URL] => 
    [SECTION_PAGE_URL] => 
    [CANONICAL_PAGE_URL] => 
    [PICTURE] => 
    [DESCRIPTION] => 
    [DESCRIPTION_TYPE] => text
    [XML_ID] => 44
    [TMP_ID] =>
    [INDEX_ELEMENT] => N
    [INDEX_SECTION] => N
    [WORKFLOW] => N
    [BIZPROC] => N
    [SECTION_CHOOSER] => L
    [LIST_MODE] => 
    [RIGHTS_MODE] => S
    [SECTION_PROPERTY] => N
    [PROPERTY_INDEX] => N
    [VERSION] => 1
    [LAST_CONV_ELEMENT] => 0
    [SOCNET_GROUP_ID] => 
    [EDIT_FILE_BEFORE] => 
    [EDIT_FILE_AFTER] => 
)
*/

Выбираем инфоблоки с удобной сортировкой для административной части и создаем массив для select, также отображаем привязку к сайтам:


$iblocks = array();

$iblockResult \Bitrix\Iblock\IblockTable::getList(array(
    
'order' => array('IBLOCK_TYPE_ID'=>'ASC','SORT'=>'ASC','ID'=>'DESC'),
));

while(
$iblock=$iblockResult->fetch())
{
    
$iblockSiteResult \Bitrix\Iblock\IblockSiteTable::getList(array(
        
'filter' => array('=IBLOCK_ID'=>$iblock['ID']),
    ));
    
$sites=array();
    while(
$iblockSite=$iblockSiteResult->fetch())
        
$sites[] = $iblockSite['SITE_ID'];
    
$iblocks[$iblock['ID']] = '['.$iblock['ID'].', '.$iblock['IBLOCK_TYPE_ID'].', '.implode(', ',$sites).'] '.$iblock['NAME'];
}

/*
Array
(
    [45] => [45, banket, s5] Отзывы
    [44] => [44, banket, s5] Пространство для Вашего праздника
    [43] => [43, banket, s5] Галерея
    [42] => [42, banket, s5] Меню
    [41] => [41, banket, s5] Галерея на главной
    [40] => [40, banket, s5] Слайдер на главной
    [19] => [19, blocks, s1, s2] Счётчик номера брони
    [15] => [15, blocks, s1, s2] Сообщения
    [12] => [12, blocks, s2] Новости EN
)
*/

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