Работа с инфоблоками - techart/bitrix.tao GitHub Wiki
Bitrix.TAO представляет собой дополнительный слой API поверх стандартного API Битрикса. Причем, после установки, ТАО позволяет сразу начать применять функционал. Т.е. вызовы методов ТАО будут работать на равне с битриксовыми.
Например, в компоненте вывода новостей заменяем числовое значение ID блока на вызов метода TAO.Bitrix.
<?$APPLICATION->IncludeComponent("bitrix:news", ".default", array(
...
"IBLOCK_ID" => \TAO::infoblock('news')->getId(),
...
);
И это будет работать. Единственное, необходимо в настройках инфоблока поменять символьный код на читабельный.
Обращение к инфоблоку
Большим недостатком Битрикса является идентификация инфоблока числовым автоинкрементным идентификатором, который нельзя использовать в php-коде в силу того, что никто не гарантирует его соответствие в разных копиях проекта.
Символьный код у инфоблоков есть, но Битрикс не требует его обязательности и уникальности, хотя не понятно кому в здравом уме потребуется делать одинаковые символьные коды у нескольких инфоблоков.
Обращение к инфоблоку производится по его символьному коду. Изначально существует договоренность, что символьный код инфоблока будет уникальным.
$ib = \TAO::infoblock('cats'); // получили объект инфоблока коты :)
Также, можно обратиться по ID инфоблока.
$ib = \TAO::infoblock(3); // опять получили объект инфоблока коты :)
Получение списка записей
Список записей в стандратном формате битрикса можно получить при помощи метода getRows().
$rows = \TAO::infoblock('cats')->getRows($args);
где $args - ассоциативный массив параметров выборки, состоящий из следующих параметров:
- filter - идентичен параметру arFilter стандартной функции CIBlockElement::GetList [http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockelement/getlist.php]
- order - идентичен параметру arOrder стандартной функции CIBlockElement::GetList [http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockelement/getlist.php]
- fields - идентичен параметру arSelectFields стандартной функции CIBlockElement::GetList.
- group_by - идентичен параметру arGroupBy стандартной функции CIBlockElement::GetList.
- page - номер текущей страницы (нумеруется с единицы).
- per_page - количество записей на странице.
- pager_var - можно заменить вместо page. В этом случае номер страницы будет браться из $_GET по имени указанной переменной.
- check_permissions - настройка проверки прав доступа к инфоблокам. Аналогична настройке CHECK_PERMISSIONS из стандартного параметра arFilter. Т.е. можно ее настроить через фильтр.
Для получения лимитированного количества нужно определить параметры per_page и page.
$towns = \TAO::infoblock('towns')->getRows(array(
'filter' => array(
'address' => $this->id(),
'ACTIVE' => 'Y'
),
'fields' => array(
'DETAIL_PAGE_URL',
'PROPERTY_address',
),
'page' => 1,
'per_page' => 1,
));
Список записей можно получить в формате типа \TAO\Entity. Для этого необходимо вызвать метод getItems($args).
$towns = \TAO::infoblock('towns')->getItems($args);
Получение количества записей
Для этого применяется метод getCount().
$towns = \TAO::infoblock('towns')->getCount($args);
Параметр $args используется тот же, что и в методах выше.
Формирование списка опций
В Bitrix.TAO применяется метод getItemsForSelect($args = array()).
$data['ITEMS'] = \TAO::infoblock('towns')->getItemsForSelect();
Получение одного элемента
Загрузку одного элемента в формате \TAO\Entity можно произвести с применением метода loadItem($id).
$item = \TAO::infoblock('towns')->loadItem($id);
При этом если $id содержит не цифровые символы, то загрузка будет производиться по символьному коду.
Удаление элемента
\TAO::infoblock('towns')->deleteItem($id);
Сохранение элемента
$item->save();
Создание нового элемента
$item = \TAO::infoblock('towns')->makeItem();
$item['NAME'] = 'Название';
$item->save();
Вывод записей на странице
Для вывода записей можно воспользоваться методом render($args = array()).
print \TAO::infoblock('cars')->render(array(
'order' => array('NAME' => 'asc'),
'page' => 1,
'per_page' => 2,
'pager_var' => 'page',
'pager_bottom' => true,
'list_mode' => 'list',
'item_mode' => 'name',
));
где $args - ассоциативный массив параметров выборки, передаваемый в метод. Сюда входят все те же параметры, что и для метода getRows() + параметры режима отображения.
- item_mode - режим отображения записи. По умолчанию подключается teaser.
- list_mode - режим отображения списка записей. По умолчанию подключается шаблон default.
- pager_top - подключает верхний блок постраничной навигации.
- pager_bottom - подключает нижний блок постраничной навигации.
Кроме этого, есть отдельные методы для вывода списка разделов, списка всех элементов инфоблока.
- renderSectionsList($args) - выводит нумерованный или ненумерованный список разделов. Для выбора вида нумерации необходимо передать тип нумерации (ul или ol) в параметре sections_list_type. По умолчанию используется ul.
print \TAO::infoblock('cats')->renderSectionsList(array(
'sections_list_type' => 'ol',
));
- renderElementsPage($args) - формирует список из элементов инфоблока. Можно передавать все те же параметры, что и для render().
- renderSectionsPage($args) - по сути то же, что и renderSectionsList($args).