CIBlockElement::GetList — один из старых, но до сих пор рабочих способов получить элементы инфоблока в Битрикс. Например, вывести последние новости, список производителей или несколько товаров.
Для новичка важно не пытаться сразу достать «всё». Сначала выберем только нужные поля и активные элементы. Так код будет понятнее, а запрос — легче.
Что нужно знать до начала
Нужен ID инфоблока. Его можно посмотреть в административной части в списке инфоблоков. В примере ниже ID новостей равен 1. В своём проекте подставьте свой ID.

IBLOCK_ID=.Самый простой базовый пример
Код можно поставить в шаблон компонента или в свой PHP-файл, который уже подключён через Битрикс. Сначала подключаем модуль iblock. Потом описываем сортировку, фильтр и поля, которые хотим получить.
<?php
if (CModule::IncludeModule('iblock')) {
$arOrder = array('SORT' => 'ASC', 'ID' => 'DESC');
$arFilter = array(
'IBLOCK_ID' => 1,
'ACTIVE' => 'Y',
'ACTIVE_DATE' => 'Y',
'CHECK_PERMISSIONS' => 'Y',
'MIN_PERMISSION' => 'R',
);
$arSelect = array('ID', 'IBLOCK_ID', 'NAME', 'DETAIL_PAGE_URL');
$result = CIBlockElement::GetList($arOrder, $arFilter, false, false, $arSelect);
while ($item = $result->GetNext(false)) {
?>
<a href="<?=htmlspecialcharsbx($item['DETAIL_PAGE_URL'])?>">
<?=htmlspecialcharsbx($item['NAME'])?>
</a><br>
<?php
}
}
?>
В $arFilter мы оставили только элементы нужного инфоблока, которые активны и попадают в период публикации. В $arSelect указали только поля, которые выводим. По документации для корректной выборки стоит включать ID и IBLOCK_ID.
CHECK_PERMISSIONS => 'Y' включает проверку доступа, а MIN_PERMISSION => 'R' требует право чтения. Активность элемента сама по себе не означает, что его можно показывать каждому посетителю.
Почему нужен htmlspecialcharsbx
Обычный GetNext() уже экранирует значения. Здесь мы специально передали false, чтобы получить исходный текст, и экранируем его при выводе. Не применяйте оба способа одновременно: иначе амперсанд и кавычки могут отображаться неправильно. Подстановка шаблонов в DETAIL_PAGE_URL сохраняется.
Название новости заполняет редактор сайта. В нём могут случайно оказаться кавычки или HTML. Перед выводом в страницу используйте htmlspecialcharsbx(): функция превращает специальные символы в безопасный текст. Это полезная привычка, особенно если данные не пишете лично вы.
Не убирайте эту функцию только потому, что «у нас редакторы аккуратные». Ошибка обычно появляется позже, когда контент меняет другой человек.
Как вывести только пять последних новостей
Меняем сортировку и добавляем ограничение в четвёртый параметр:
<?php
$arOrder = array('ACTIVE_FROM' => 'DESC', 'ID' => 'DESC');
$arNav = array('nTopCount' => 5);
$result = CIBlockElement::GetList(
$arOrder,
$arFilter,
false,
$arNav,
$arSelect
);
?>
Не передавайте пустой массив вместо четвёртого параметра «на всякий случай». В этом методе пустой массив означает ограничение на десять элементов. Если ограничение не нужно, передавайте false.
Что часто ломается
- Забыли подключить модуль
iblock— метод не найден. - Указали чужой ID инфоблока — цикл отработает, но данных не будет.
- Не добавили
ACTIVE => 'Y'— можно случайно показать скрытый материал. - Выбрали все поля и свойства без причины — страница может работать медленнее.
- Вывели
NAMEбез экранирования — получили риск сломать HTML страницы.
Когда лучше взять компонент
Если нужна пагинация, кеширование, фильтр из формы, комплексные права или красивый вывод, сначала посмотрите штатный компонент. Самописный GetList хорош для маленького понятного блока. Не надо писать двадцать строк кода ради ссылки на одну новость, но и не стоит превращать простой блок в огромный компонент без причины.
Перед использованием проверьте пример на тестовой копии своего проекта: права, шаблоны адресов и состав полей зависят от его настроек.
Статья обновлена 3 октября 2026 года. Параметры метода и поведение четвёртого параметра сверены с официальной документацией CIBlockElement::GetList.
У стандартных компонентов реализовано кэширование, а потому несмотря на то, что в компоненте действительно часто тянутся лишние данные, нагрузки на сервер компоненты будут создавать меньше, чем Ваш пример без кэширования.
А как вывести название товара привязаное к новости
модифицировать шаблон компонента.
Чтобы ответить конкретнее нужны доступы к проекту.
А как вывести не ИМЯ, а свойства инфоблока?
if (CModule::IncludeModule("iblock")){$res = CIBlockElement::GetList(Array(), Array("IBLOCK_ID"=>1), Array("PROPERTY_1"));
while($ob = $res->GetNext()){
?>
} }
А как вывести Свойство, а не имя?