В 1С-Битрикс часто возникает необходимость вывести список элементов или разделов конкретного инфоблока. Для этого используются методы:
-
CIBlockElement::GetList– для элементов -
CIBlockSection::GetList– для разделов
Рассмотрим оба варианта с примерами кода и рекомендациями по оптимизации.
Как вывести список элементов инфоблока
Создадим тестовую страницу test.php в корне сайта:
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Список элементов инфоблока");
?>
<?
if (CModule::IncludeModule("iblock")) {
$iblock_id = 14; // ID вашего инфоблока
$my_elements = CIBlockElement::GetList(
["ID" => "ASC"], // Сортировка
["IBLOCK_ID" => $iblock_id], // Фильтр
false, // Группировка
false, // Постраничная навигация
['ID', 'NAME', 'DETAIL_PAGE_URL'] // Выбираемые поля
);
while($ar_fields = $my_elements->GetNext()) {
echo urldecode($ar_fields['DETAIL_PAGE_URL']) . "<br>";
}
}
?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>Разбор кода:
-
Подключаем модуль
iblock– обязательно для работы с инфоблоками -
Указываем ID нужного инфоблока
-
CIBlockElement::GetListпринимает параметры:-
Сортировка (
["ID" => "ASC"]) -
Фильтр (
["IBLOCK_ID" => $iblock_id]) -
Выбираемые поля (только необходимые для снижения нагрузки)
-
-
Выводим результаты в цикле
Важно: Всегда указывайте конкретные поля в выборке, чтобы избежать избыточной нагрузки на сервер.
Как вывести свойства элементов
Для вывода свойств добавьте их в массив выборки с префиксом PROPERTY_:
$my_elements = CIBlockElement::GetList(
["ID" => "ASC"],
["IBLOCK_ID" => $iblock_id],
false,
false,
['ID', 'NAME', 'DETAIL_PAGE_URL', 'PROPERTY_TITLE']
);
while($ar_fields = $my_elements->GetNext()) {
echo $ar_fields['PROPERTY_TITLE_VALUE'] . "<br>";
}Как вывести список разделов инфоблока
Для разделов используйте CIBlockSection::GetList:
$my_sections = CIBlockSection::GetList(
["ID" => "ASC"], // Сортировка
["IBLOCK_ID" => 14, "ACTIVE" => "Y"], // Фильтр
false, // Подсчет количества элементов
['ID', 'NAME', 'CODE'] // Выбираемые поля
);
while($ar_fields = $my_sections->GetNext()) {
echo urldecode($ar_fields['CODE']) . "<br>";
}Ключевые отличия:
-
Четвертый параметр (
false) – отвечает за подсчет элементов -
Фильтр может включать
"ACTIVE" => "Y"для только активных разделов
Оптимизация запросов
-
Ограничивайте выборку – используйте
"nTopCount" => Nдля получения N записей -
Выбирайте только нужные поля – избегайте
falseв параметре выборки -
Кэшируйте результаты – особенно для часто используемых данных
Эти методы помогут вам эффективно работать с инфоблоками в Битрикс без лишней нагрузки на сервер.