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();