Шпаргалка по Bitrix. Работа с данными инфоблока

05.05.2022
Содержание:

В данной шпаргалке собран код для работы с свойствами инфоблока. Я покажу вам как получать данные из инфоблока, его свойства, параметры, UF поля.

Со временем шпаргалка будет пополняться, поэтому добавь её в закладки!

Как получить все свойства инфоблока

$IBLOCK_ID = 4;
$properties = CIBlockProperty::GetList(Array("sort"=>"asc", "name"=>"asc"), Array("ACTIVE"=>"Y", "IBLOCK_ID"=>$IBLOCK_ID));
while ($prop_fields = $properties->GetNext()) {
    $arrListProps[] = $prop_fields;
}

Получить значения свойств инфоблока

/* массив с id свойств инфоблока */
$arrIdProps = [
    993,
    994,
    995,

];

foreach($arrIdProps as $propID) {

    /* получаем данные по свойсту */
    $properties = CIBlockProperty::GetList(array(), Array("ACTIVE"=>"Y", "ID" => $propID, "IBLOCK_ID" => 4));
    while($propData = $properties->GetNext()) {

        $arrDataProps[$propData["ID"]] = $propData;

        /* получаем значения свойства */
        $property_enums = CIBlockPropertyEnum::GetList(Array(), Array("IBLOCK_ID"=>4, "CODE"=>$propData["CODE"]));
        while ($enum_fields = $property_enums->GetNext()) {
            $arrDataProps[$propData["ID"]]["LIST_VALUE"][] = [
                "ID" 	=> $enum_fields["ID"],
                "VALUE" => $enum_fields["VALUE"]
            ];
        }

    }

}

Получить все разделы и подразделы инфоблока

$rsParentSection = CIBlockSection::GetList(
    Array('name' => 'asc'),
    Array('IBLOCK_ID' => 4, 'SECTION_ID' => "", 'ACTIVE' => 'Y')
);

while ($arParentSection = $rsParentSection->GetNext()) {

    $arrFullListSection[] = $arParentSection;
	$arFilter = array(
        'IBLOCK_ID' => $arParentSection['IBLOCK_ID'],
        '>LEFT_MARGIN' => $arParentSection['LEFT_MARGIN'],
        '<RIGHT_MARGIN' => $arParentSection['RIGHT_MARGIN'],
        '>DEPTH_LEVEL' => $arParentSection['DEPTH_LEVEL']
    );

    /* делаем запрос внутри запроса по id подраздела */
    $rsSect = CIBlockSection::GetList(array('left_margin' => 'asc'), $arFilter);

    while ($arSect = $rsSect->GetNext()){
        $arrFullListSection[] = $arSect;
    }
}

Получить элементы из инфоблока

$arSelect = Array("ID", "NAME", "DATE_ACTIVE_FROM", "PREVIEW_TEXT", "PROPERTY_RATING", "PROPERTY_EMAIL", "PROPERTY_IMG_LIST");
$arFilter = Array("IBLOCK_ID"=>6, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", "PROPERTY_CML2_LINK"=>array($arResult['ID']));
$res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
while($ob = $res->GetNextElement()) {
    $elem = $ob->GetFields();

    $arProducts[] = $elem;
}

Как получить количество активных элементов в конкретном разделе инфоблока

Для получения количества элементов в разделе, используем метод CIBlockSection::GetSectionElementsCount, где в качестве первого параметра указываем id раздела, а вторым параметром указываем массив для фильтрации.

$activeElements = CIBlockSection::GetSectionElementsCount($sectionId, Array("CNT_ACTIVE"=>"Y"));

Получение количества элементов с помощью метода GetList

$arFilter = Array(
    "IBLOCK_ID" => 4,
    "SECTION_ID" => $sectionId,
    "ACTIVE"=>"Y",
    "INCLUDE_SUBSECTIONS" => 'Y'
);

$res = CIBlockElement::GetList(Array("SORT"=>"ASC"), $arFilter, Array("ID"));
if($count = $res->SelectedRowsCount()){
    $activeElements = $count;
}

Получение раздела по названию

$arFilterSection = [
    "IBLOCK_ID"	=> 4,
    "NAME" 	=> "Название раздела",
];

$dbSect = CIBlockSection::GetList(false, $arFilterSection, false);
while($arSect = $dbSect->GetNext()) {
    var_dump($arSect); 
}
На этом всё!
Больше интересных статей в нашей группе - https://vk.com/progtime
Вы так же можете разместить свой вопрос на нашем форуме, где другие программисты смогут вам помочь в решение вашей задачи - https://vk.com/prog_time
Так же прокачивайте свои навыки на нашем канале - https://www.youtube.com/c/ProgTime
Наши планы
  • Написание материала для курса по разработке ботов на Telegram
  • Разработка универсального парсера на PHP

Поддержите мой сайт!

Каждый переведённый донат, мотивирует на создание новых записей и уроков на YouTube