Благодарю за подписку
Теперь Вы не пропустите информацию о ближайших скидках и акциях
Статья написана 29.10.2024
Подключаем модуль
\Bitrix\Main\Loader::includeModule('iblock');
|
\Bitrix\Iblock\TypeTable::getList(); // типы инфоблоков \Bitrix\Iblock\IblockTable::getList(); // инфоблоки \Bitrix\Iblock\PropertyTable::getList(); // свойства инфоблоков \Bitrix\Iblock\PropertyEnumerationTable::getList(); // значения свойств, например списков \Bitrix\Iblock\PropertyFeatureTable::getList(); // доп. параметры свойств (например "Показывать на детальной странице элемента") \Bitrix\Iblock\SectionTable::getList(); // Разделы инфоблоков \Bitrix\Iblock\ElementTable::getList(); // Элементы инфоблоков \Bitrix\Iblock\ElementPropertyTable::getList() // Значения свойств элементов \Bitrix\Iblock\InheritedPropertyTable::getList(); // Наследуемые свойства (seo шаблоны) |
$dbItems = \Bitrix\Iblock\ElementTable::getList(array(
'order' => array('SORT' => 'ASC'), // сортировка
'select' => array('ID', 'NAME', 'IBLOCK_ID', 'SORT', 'TAGS'), // выбираемые поля, без свойств
'filter' => array('IBLOCK_ID' => 4), // фильтр только по полям элемента, свойства (PROPERTY) использовать нельзя
'group' => array('TAGS'), // группировка по полю, order должен быть пустой
'limit' => 1000, // целое число, ограничение выбираемого кол-ва
'offset' => 0, // целое число, указывающее номер первого столбца в результате
'count_total' => 1, // дает возможность получить кол-во элементов через метод getCount()
'runtime' => array(), // массив полей сущности, создающихся динамически
'data_doubling' => false, // разрешает получение нескольких одинаковых записей
'cache' => array( // Кеш запроса. Сброс можно сделать методом \Bitrix\Iblock\ElementTable::getEntity()->cleanCache();
'ttl' => 3600, // Время жизни кеша
'cache_joins' => true // Кешировать ли выборки с JOIN
),
));
|
$dbItems->fetch(); // или $dbItems->fetchRaw() получение одной записи, можно перебрать в цикле while ($arItem = $dbItems->fetch()) $dbItems->fetchAll(); // получение всех записей $dbItems->getCount(); // кол-во найденных записей без учета limit, доступно если при запросе было указано count_total = 1 $dbItems->getSelectedRowsCount(); // кол-во полученных записей с учетом limit |
Для добавления, изменения, удаления элементов и разделов инфоблоков необходимо использовать API старого ядра.
Для работы с функционалом необходимо в настройках инфоблока прописать Символьный код API
Для получения названия класса для работы с D7 можно использовать следующий метод:
echo \Bitrix\Iblock\Iblock::wakeUp($iblockId)->getEntityDataClass(); |
Аналог в API - CIBlockElement::GetByID()
//Работа с элементом как с массивом
$element = \Bitrix\Iblock\Elements\ElementCatalogTable::getByPrimary($elementId, [
'select' => [
'ID',
'NAME',
'DETAIL_TEXT',
'DETAIL_PICTURE',
'ARTICLE_' => 'ARTICLE'
]
])->fetch();
var_dump($element);
----------------------------------------------------------------------------------
//Работа с элементом как с объектом
$element = \Bitrix\Iblock\Elements\ElementCatalogTable::getByPrimary($elementId, [
'select' => [
'ID',
'NAME',
'DETAIL_TEXT',
'DETAIL_PICTURE',
'ARTICLE_' => 'ARTICLE',
'IBLOCK_SECTION'
]
])->fetch();
echo $element->getId();
echo $element->getName();
echo $element->get('NAME');
echo $element->getDetailPicture();
echo $element->getIblockSection()->getName();
|
Аналог в API - CIBlockElement::GetList()
//Работа с элементами как с массивом
$elements = \Bitrix\Iblock\Elements\ElementCatalogTable::getList([
'select' => ['ID', 'NAME', 'ARTICLE_' => 'ARTICLE'],
'filter' => ['=ACTIVE' => 'Y'],
])->fetchAll();
foreach ($elements as $element) {
echo $element['NAME'];
}
----------------------------------------------------------------------------------
//Работа с элементами как с объектом
$elements = \Bitrix\Iblock\Elements\ElementCatalogTable::getList([
'select' => ['ID', 'NAME', 'DETAIL_PICTURE'],
'filter' => [
'ID' => $elementId
],
])->fetchCollection();
foreach ($elements as $element) {
echo $element->getName();
}
|
*Для работы кода обязательно нужно использовать поле 'SECTIONS'
$element = \Bitrix\Iblock\Elements\ElementCatalogTable::getList([
'select' => ['ID', 'SECTIONS'],
'filter' => [
'ID' => $elementId
],
])->fetchObject();
foreach ($element->getSections()->getAll() as $section) {
echo $section->getId();
echo $section->getCode();
echo $section->getName();
}
|
$element = \Bitrix\Iblock\Elements\ElementCatalogTable::getByPrimary($elementId, array(
'select' => array('ID', 'ARTICLE')
))->fetchObject();
echo $element->getArticle()->getValue();
|
$element = \Bitrix\Iblock\Elements\ElementCatalogTable::getByPrimary($elementId, array(
'select' => array('ID', 'ARTICLE')
))->fetchObject();
echo $element->getArticle()->getValue();
|
$elements = \Bitrix\Iblock\Elements\ElementCatalogTable::getList([
'select' => ['ID', 'NAME', 'DETAIL_PICTURE', 'BRAND'],
'filter' => [
'ID' => $elementId
],
])->fetchCollection();
foreach ($elements as $element) {
foreach ($element->getBrand()->getAll() as $value) {
echo $value->getValue();
}
}
|
$elements = \Bitrix\Iblock\Elements\ElementCatalogTable::getList([
'select' => ['ID', 'MORE_PHOTO.FILE'],
'filter' => [
'ID' => $elementId
],
])->fetchCollection();
foreach ($elements as $element) {
foreach ($element->getMorePhoto()->getAll() as $value) {
var_dump('/upload/' . $value->getFile()->getSubdir().'/'.$value->getFile()->getFileName());
}
}
|
$element = \Bitrix\Iblock\Elements\ElementCatalogTable::getList([
'select' => ['ID', 'COLOR.ITEM'],
'filter' => [
'ID' => $elementId
],
])->fetchObject();
echo $element->getColor()->getItem()->getId();
echo $element->getColor()->getItem()->getXmlId();
echo $element->getColor()->getItem()->getValue();
|
*Для работы кода обязательно нужно использовать приписку к полю '.ELEMENT' или '.SECTION'
$element = \Bitrix\Iblock\Elements\ElementCatalogTable::getList([
'select' => ['ID', 'BRAND.ELEMENT'],
'filter' => [
'ID' => $elementId
],
])->fetchObject();
foreach ($element->getBrand()->getAll() as $brand) {
echo $brand->getElement()->getId();
echo $brand->getElement()->getName();
}
|
$element = \Bitrix\Iblock\Elements\ElementCatalogTable::getList([
'select' => ['ID', 'NAME'],
'filter' => [
'ID' => $elementId
],
'cache' => array( // Кеш запроса. Сброс можно сделать методом \Bitrix\Iblock\ElementTable::getEntity()->cleanCache();
'ttl' => 3600, // Время жизни кеша
'cache_joins' => true // Кешировать ли выборки с JOIN
)
])->fetchObject();
|
$dbItems = \Bitrix\Iblock\ElementTable::getList([
'order' => ['SORT' => 'ASC'],
'select' => [
'ID',
'NAME',
'CODE',
],
'filter' => [
'IBLOCK_ID' => $arParams['IBLOCK_ID']
]
]);
while ($arItem = $dbItems->fetch()) {
print_r($arItem);
}
|
$dbItems = \Bitrix\Iblock\ElementTable::getList([
'order' => ['SORT' => 'ASC'],
'select' => [
'ID',
'NAME',
'CODE',
'IBLOCK_ID',
'IBLOCK_SECTION_ID',
'DETAIL_PAGE_URL_RAW' => 'IBLOCK.DETAIL_PAGE_URL'
],
'filter' => [
'IBLOCK_ID' => $arParams['IBLOCK_ID']
]
]);
while ($arItem = $dbItems->fetch()) {
$DETAIL_PAGE_URL = \CIBlock::ReplaceDetailUrl($arItem['DETAIL_PAGE_URL_RAW'], $arItem, true, 'E');
}
|
Обсудить задачу
Теперь Вы не пропустите информацию о ближайших скидках и акциях
Я свяжусь с Вами в ближайшее время!