API для работы с инфоблоками - techart/bitrix.tao GitHub Wiki

Работа с инфоблоками и элементами инфоблоков.

Bitrix.Tao представляет собой в данном случае дополнительный слой API поверх стандартного API Битрикса.

Обращение к инфоблоку по его символьному коду

Большим недостатком Битрикса является идентификация инфоблока числовым автоинкрементным идентификатором, который нельзя использовать в php-коде в силу того, что никто не гарантирует его соответствие в разных копиях проекта.

Символьный код у инфоблоков есть, но Битрикс не требует его обязательности и уникальности. Поэтому мы просто организационными методами договариавемся, что у каждого инфоблока должен быть уникальный символьный код (по крайней мере у тех, с которыми мы работаем через нашу надстройку).

Итак, тренироваться будем на... кошках. Пусть у нас есть инфоблок "Кошки" с символьным кодом "cats". Теперь мы можем получить объект инфоблока:

$cats = \TAO::infoblock('cats');

Вся работа с инфоблоком и его элементами идет через этот объект, и числовой идентификатор инфоблока нас уже не волнует.

Получение списка элементов инфоблока

Получить список записей в стандартном формате битрикса (бардачный массив) можно следующим образом:

$rows = $cats->getRows($args);

Здесь $args - ассоциативный массив параметров выборки. Состоит из следующего:

  • filter - идентичен параметру arFilter стандартной функции CIBlockElement::GetList
  • order - идентичен параметру arOrder стандартной функции CIBlockElement::GetList
  • group_by - идентичен параметру arGroupBy стандартной функции CIBlockElement::GetList
  • fields - идентичен параметру arSelectFields стандартной функции CIBlockElement::GetList

Для получения лимитированного количества нужно определить параметры:

  • per_page - количество на странице
  • page - номер текущей страницы (нумеруется с единицы)

Параметр page можно заменить на pager_var. В этом случае номер страницы будет браться из $_GET по имени указанной переменной.

Кроме getRows есть еще следующее:

$items = $cats->getItems($args);

Отличие от getRows в том, что здесь возвращается массив объектов типа \TAO\Entity, которые более дружественны программисту нежели унылые битриксовые массивы.

Подсчет количества записей

$count = $cats->getCount($args);

Параметр $args можно использовать тот же, что и выше, хоть и большинство информации из него для подсчета количества записей не используется.

Работа с одним элементом

Загрузка одного элемента в формате \TAO\Entity:

$item = \TAO::infoblock('cats')->loadItem($id);

При этом если $id содержит не цифровые символы, то загрузка будет производиться по символьному коду.

Удаление элемента:

\TAO::infoblock('cats')->deleteItem($id);

Сохранение элемента:

$item->save();

Создание нового элемента:

$item = \TAO::infoblock('cats')->makeItem();
$item['NAME'] = 'Название';
$item->save();