О нас
Разработчикам
Заметки
Переводчик
Транслитератор
Сравнить текст
Генератор пароля
Ip и информация
Создать картинку Webp
Контакты
En
О нас
Разработчикам
Контакты
En
Bitrix db
Контент
<?php /* 'ACTIVE'=>'Y', 'ACTIVE_DATE' => 'Y', 'GLOBAL_ACTIVE'=>'Y' - Активные IBLOCK_TYPE - Название для группы инфо-блоков, например content IBLOCK_ID - ID инфо-блока, например у слайдера id = 4 Если в логах возникает ошибка "Mysql server has gone away", то в файле bitrix/php_interface/after_connect.php добавить: $DB->Query("SET wait_timeout=28800"); */ // Получить данные самого инфоблока, например картинку $iblockPicture = CIBlock::GetArrayByID($IBLOCK_ID, 'PICTURE'); CModule::IncludeModule('iblock'); /* * Получить список элементов * Может понадобиться подключить CModule::IncludeModule('iblock') * https://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockelement/getlist.php */ $res = CIBlockElement::GetList( ['SORT' => 'ASC'], // Сортировать по дате ['DATE_ACTIVE' => 'DESC'], по цене ['catalog_PRICE_1' => 'DESC'] [ 'IBLOCK_TYPE' => 'multilevel_menu', 'IBLOCK_ID' => 5, //'SECTION_ID' => 594, 'SECTION_CODE' => 'orange', 'INCLUDE_SUBSECTIONS' => 'Y', // Получить элементы из вложенных разделов ['ID' => 242], ['ACTIVE' => 'Y', 'ACTIVE_DATE' => 'Y', 'GLOBAL_ACTIVE' => 'Y'], '=AVAILABLE' => 'Y', //'CATALOG_AVAILABLE' => 'N', // получить товары, которых доступное кол-во 0 или минусовое //'!PROPERTY_PHOTO_WORKS' => false, //'PROPERTY_LINK_CONSTRUCTION' => $arResult['PROPERTIES']['LINK_CONSTRUCTION']['VALUE'], //'PROPERTY_LIST_VALUE' => 'text', // Если свойство список, то дописываем _VALUE //['ID' => CIBlockElement::SubQuery('ID', ['IBLOCK_ID' => 5, 'ID' => 242])], //array("ID" => CIBlockElement::SubQuery("ID", array("IBLOCK_ID" => 5, "PROPERTY_PKE" => 243))), ], false, false, //['nTopCount' => SQL_LIMIT], // Ограничить выборку, т.е. limit ['ID', 'NAME', 'PREVIEW_PICTURE', 'DETAIL_PAGE_URL'] // 'PROPERTY_PHOTO' - получить свойство, 'CATALOG_CATALOG_GROUP_ID_1' - получить цену (или CATALOG_PRICE_1), 'CATALOG_QUANTITY' - получить доступное кол-во ); while ($p = $res->GetNextElement()) { // Если свойства не нужны можно так $res->GetNext(), чтобы без объекта fields $props = $p->GetProperties(); // Получить все свойства $props = $p->GetProperty('PROP_NAME'); // Получить одно свойство $product = $p->fields; dump($product['NAME']); // Название элемента } // Простой способ получить все элементы $res = CIBlockElement::GetList( [], [ 'IBLOCK_ID' => 25, 'ACTIVE' => 'Y', ], false, [], [] ); while ($item = $res->GetNext()) { dump($item); } // Получить последний ID инфоблока $lastIdForm = CIBlockElement::GetList( ['IBLOCK' => $iblockId], false, ['nPageSize' => 1], ['ID'] )->fetch(); // Получить торговые предложения $productOffers = CCatalogSKU::getOffersList( $productsId, // массив ID товаров false, // указываете ID инфоблока только в том случае, когда ВЕСЬ массив товаров из одного инфоблока и он известен ['ACTIVE' => 'Y'], // дополнительный фильтр предложений. по умолчанию пуст ['NAME'], // массив полей предложений. даже если пуст - вернет ID и IBLOCK_ID ['CODE' => ['HEIGHT']] // свойства предложений. имеет 2 ключа: ID - массив ID свойств предложений либо. CODE - массив символьных кодов свойств предложений, если указаны оба ключа, приоритет имеет ID ); // Получить id товара по id торгового предложения $productID = CCatalogSku::GetProductInfo($productItem->getField('PRODUCT_ID'))['ID']; // Получить товар $product = CCatalogProduct::GetByID($product['ID']); $product = CIBlockElement::GetByID($productId)->GetNext(); $p = CIBlockElement::GetByID($product['ID'])->GetNextElement(); $props = $p->GetProperties(); $product = $p->fields; // Получить все свойства для товара $props = CIBlockElement::GetByID($product['ID'])->GetNextElement()->GetProperties(); // Получить одно свойство для товара $prop = CIBlockElement::GetByID($product['ID'])->GetNextElement()->GetProperty('MORE_PHOTO'); // Получить цены для товара $price = CPrice::GetByID($product['ID']); $price = CPrice::GetBasePrice($product['ID'])['PRICE'] ?? 0; // Изменить базовую цену CPrice::SetBasePrice($product['ID'], 777, 'RUB'); // Получить цены для товара со скидками $priceArr = CCatalogProduct::GetOptimalPrice($offerProductID); $price = $priceArr['RESULT_PRICE']['BASE_PRICE']; $priceDiscount = $priceArr['RESULT_PRICE']['DISCOUNT_PRICE']; // Получить картинку из справочника (highload-блок) if (CModule::IncludeModule('highloadblock')) { $HLBlock = Bitrix\Highloadblock\HighloadBlockTable::getById(1)->fetch(); $obEntity = Bitrix\Highloadblock\HighloadBlockTable::compileEntity($HLBlock); $strEntityClass = $obEntity->getDataClass(); $data = $strEntityClass::getList([ 'select' => ['ID', 'UF_NAME', 'UF_XML_ID', 'UF_DESCRIPTION', 'UF_FILE'], 'filter' => ['UF_XML_ID' => $arResult['PROPERTIES']['COLOR_IMAGE']['VALUE']], 'order' => ['ID' => 'ASC'], 'limit' => '50', ]); /*while ($arItem = $rsData->Fetch()) { $arItems[] = $arItem; // Если множество }*/ $HLItems = $data->Fetch(); $HLItems['UF_IMG'] = CFile::GetPath($HLItems['UF_FILE']); } dump($HLItems); // Получить из карточки товара данные о категории или о Категориях, можно передать массив id $dbProductCat = CIBlockElement::GetElementGroups($arResult['ID'], true); while($productCat = $dbProductCat->Fetch()) { echo "\n<div>Все товары: <a href='/catalog/{$productCat['CODE']}'>{$ar_group['NAME']}</a></div>"; } // Получить данные раздела $section = CIBlockSection::GetByID($sectionId)->GetNext(); // Получить список разделов $sectionOb = CIBlockSection::GetList( [], [ 'IBLOCK_ID' => $arResult['ORIGINAL_PARAMETERS']['IBLOCK_ID'], 'SECTION_CODE' => $arResult['ORIGINAL_PARAMETERS']['SECTION_CODE'], // '=CODE' => 'код секции', 'GLOBAL_ACTIVE' => 'Y' ], false, ['ID', 'NAME', 'CODE', 'PICTURE'] ); while ($section = $sectionOb->GetNext()) { // $res->GetNextElement() $sections[] = $section['CODE']; } dump($sections); // Получить данные свойства список $res = CIBlockPropertyEnum::GetList([], [ 'IBLOCK_ID' => 5, 'CODE' => 'STATUS', ]); while ($item = $res->Fetch()) { //dump($item); } // Получить данные в корзине global $cartItems; global $cartItemsID; global $cartItemsCount; // Формируем данные о корзине $cartItemsCount = 0; if (CModule::IncludeModule('sale')) { $cartItemsOb = \Bitrix\Sale\Basket::getList([ 'select' => ['ID', 'PRODUCT_ID', 'NAME', 'QUANTITY', 'PRICE'], 'filter' => [ '=FUSER_ID' => \Bitrix\Sale\Fuser::getId(), '=ORDER_ID' => null, '=LID' => \Bitrix\Main\Context::getCurrent()->getSite(), '=CAN_BUY' => 'Y', ] ]); while ($item = $cartItemsOb->fetch()) { // Содержимое корзины $cartItems[] = $item; $cartItemsCount += $item['QUANTITY']; $cartItemsID[] = $item['PRODUCT_ID']; } } // Добавление в корзину (Через форму отправлять product_id и quantity) if (CModule::IncludeModule('catalog')) { if ($_POST['quantity']) { Add2BasketByProductID( $_POST['product_id'], $_POST['quantity'], false ); LocalRedirect($serverMain['referer'] ?: '/cart/'); } } // Изменить элемент программно $id = 3852; $fields = ['PREVIEW_TEXT' => 'Lorem ipsum dolor sit.']; $updateElement = new CIBlockElement(); $updateElement->update($id, $fields); // Изменить кол-во программно $id = 777; Cmodule::IncludeModule('catalog'); CCatalogProduct::Update($id, ['QUANTITY' => 7]); // Очистить корзину if (CModule::IncludeModule('sale')) { $cartItemsOb = \Bitrix\Sale\Basket::getList([ 'select' => ['ID', 'PRODUCT_ID', 'NAME', 'QUANTITY', 'PRICE'], 'filter' => [ '=FUSER_ID' => \Bitrix\Sale\Fuser::getId(), '=ORDER_ID' => null, '=LID' => \Bitrix\Main\Context::getCurrent()->getSite(), '=CAN_BUY' => 'Y', ] ]); while ($item = $cartItemsOb->fetch()) { CSaleBasket::Delete($item['ID']); } // CSaleBasket::DeleteAll(CSaleBasket::GetBasketUserID()); // Устаревший способ } // ID товара в корзине $cartItems = CSaleBasket::GetList( [ 'NAME' => 'ASC', 'ID' => 'ASC' ], [ 'FUSER_ID' => CSaleBasket::GetBasketUserID(), 'LID' => SITE_ID, 'PRODUCT_ID' => $productID, 'ORDER_ID' => 'NULL', 'DELAY' => 'N' //Исключая отложенные ], false, false, ['PRODUCT_ID'] ); $arCartItems = $cartItems->Fetch() ?: []; /*while ($arCartItems = $cartItems->Fetch()) { $itInCart = $arCartItems['PRODUCT_ID']; }*/ dump($itInCart); // Получаем цепочку разделов навигации в компоненте $chain = CIBlockSection::GetNavChain($arResult['IBLOCK_ID'], $arResult['ID'], ['ID', 'NAME', 'CODE']); $breadcrumb[0]['id'] = null; $breadcrumb[0]['name'] = 'Каталог'; $breadcrumb[0]['link'] = $parent; $i = 1; while ($arItem = $chain->Fetch()) { $breadcrumb[$i]['id'] = $arItem['ID']; $breadcrumb[$i]['name'] = $arItem['NAME']; $breadcrumb[$i]['link'] = $parent . $arItem['CODE'] . '/'; $i++; } // Кол-во товаров в разделе с сортировкой по свойству, которое есть $countElements = CIBlockSection::GetSectionElementsCount( $id, [ 'CNT_ACTIVE' => 'Y', 'PROPERTY' => ['!PHOTO_WORKS' => false], ] ); // Получаем данные дополнительного поля $uf = CUserFieldEnum::GetList( [], // Сортировка [ 'USER_FIELD_NAME' => 'UF_SECTION_DETAIL', // Фильтр ] ); while ($ufRes = $uf->GetNext()) { $sectionDetail[$ufRes['ID']] = $ufRes['XML_ID']; } // Получить данные катинок $resImg = CFile::GetList( [], ['@ID' => [1, 2, 3]] // Id картинок ); while ($img = $resImg->GetNext()) { $images[] = $img; } // GetList D7 use Bitrix\Main\Loader; use Bitrix\Iblock\ElementTable; if (Loader::includeModule('iblock')) { $res = ElementTable::getList([ 'order' => ['SORT' => 'ASC'], // сортировка 'select' => ['ID', 'NAME', 'IBLOCK_ID', 'SORT', 'TAGS'], // выбираемые поля, без свойств. Свойства можно получать на старом ядре \CIBlockElement::getProperty 'filter' => [ // фильтр только по полям элемента, свойства (PROPERTY) использовать нельзя 'IBLOCK_ID' => 51, //'IBLOCK_CODE' => 'settings', ], 'group' => [], // группировка по полю, order должен быть пустой 'limit' => false, // целое число, ограничение выбираемого кол-ва 'offset' => 0, // целое число, указывающее номер первого столбца в результате 'count_total' => false, // дает возможность получить кол-во элементов через метод getCount() 'runtime' => [], // массив полей сущности, создающихся динамически 'data_doubling' => false, // разрешает получение нескольких одинаковых записей 'cache' => [ // Кеш запроса, почему-то в офф. документации об этом умалчивают 'ttl' => 3600, 'cache_joins' => true ], ]); } while ($p = $res->fetch()) { dump($p); } $res->fetch(); // или $res->fetchRaw() получение одной записи, можно перебрать в цикле while ($arItem = $res->fetch()) $res->fetchAll(); // получение всех записей $res->getCount(); // кол-во найденных записей без учета limit, доступно если при запросе было указано count_total = 1 $res->getSelectedRowsCount(); // кол-во полученных записей с учетом limit // https://blog.budagov.ru/bitrix-d7-dlya-infoblokov/ /** * * @return int * Возвращает id пользователя. * Если пользователь c номером телефона существует, то обновим его или создадим нового. * * @param string $tel - телефон пользователя. * @param string $name - имя пользователя, необязательный параметр. * @param string $email - email пользователя, необязательный параметр. */ function userAddOrUpdate($tel, $name = null, $email = null) { // Удаляем всё лишнее из телефона $tel = str_replace(['(', ')', '‑', '—', ' ', '+', '‑', '-', '—', '_', ' ', '<br>', "\n"], '', $tel); // Поля пользователя $userFields = [ 'NAME' => $name ?: $tel, 'LOGIN' => $tel, 'EMAIL' => $email ?: "{$tel}_no_email@email.ru", 'PERSONAL_PHONE' => $tel, // PHONE_NUMBER 'PASSWORD' => 'uR5CeoAU', 'CONFIRM_PASSWORD' => 'uR5CeoAU', 'LID' => 'ru', 'ACTIVE' => 'Y', 'GROUP_ID' => [3, 4, 5], ]; // Проверим, существует ли пользователь с определённым логином $userId = CUser::GetList( '', '', ['LOGIN' => $tel] )->fetch()['ID'] ?? null; // Объект пользователя $user = new CUser; if ($userId) { // Обновим $user->Update($userId, $userFields); } else { // Создадим $userId = $user->Add($userFields); } return $userId; } // Получаем пользователя $userId = userAddOrUpdate('17777777777', 'Name'); // Создаём новый заказ без товара $orderFields = [ 'USER_DESCRIPTION' => 'Запрос из формы', 'USER_ID' => $userId, 'LID' => SITE_ID, 'PERSON_TYPE_ID' => 1, 'PAYED' => 'N', 'CANCELED' => 'N', 'STATUS_ID' => 'N', //'PRICE' => 1000.00, 'CURRENCY' => 'RUB', // CSaleLang::GetLangCurrency(SITE_ID) 'PAY_SYSTEM_ID' => 2, //'PRICE_DELIVERY' => 100.00, 'DELIVERY_ID' => 2, 'TAX_VALUE' => 0.0, ]; $orderId = CSaleOrder::Add($orderFields); var_dump($orderId); // Получить все доставки $deliveriesAll = \Bitrix\Sale\Delivery\Services\Table::getList( [ 'select' => ['ID'], ] )->fetchAll(); $deliveriesAllIds = []; foreach ($deliveriesAll as $delivery) { $deliveriesAllIds[] = $delivery['ID']; } // Получить купон из закзаза $couponList = \Bitrix\Sale\Internals\OrderCouponsTable::getList([ 'select' => ['COUPON'], 'filter' => ['=ORDER_ID' => 2841], ]); while ($coupon = $couponList->fetch()) { echo $coupon['COUPON']; }
Список
Loading...