Задать вопрос
inik23
@inik23
типа разработчик

Как вытянуть все товары со всех разделов по определенному свойству в bitrix?

Сломал голову и решился все таки написать сюда.
Есть инфоблок "каталог" с товарами которые распределены по категориям. У каждого товара есть дополнительное свойство БРЕНД.
Вопрос:
Как вывести весь список брендов с количеством товара с данным брендом/
Пример
adidas (234) , nike(23)
  • Вопрос задан
  • 801 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 2
@r_zaycev
CIBlockElement::GetList, передать в аргументе групировки arGroupBy массив такого вида:

array(
'PROPERTY_BRAND' // Где BRAND это код свойсва "БРЕНД"
)
Ответ написан
Считаем что свойство зовут "PROPERTY_BRAND"
$brands = [];
$arF = ["IBLOCK_ID" => $IBLOCK_ID,"!PROPERTY_BRAND" => false];
$res = CIBlockElement::GetList(["PROPERTY_BRAND"=>"ASC"],$arF,["PROPERTY_BRAND"],false);
while($arRes = $res->Fetch()){
  $brands[$arRes["PROPERTY_BRAND_VALUE"]] = $arRes["CNT"];
}

на выходе получится массив вида ["Asus" => 22, "Bosch" => 10, ...]

Если у вас свойство "PROPERTY_BRAND" список тогда необходимо сделать еще запрос:

$brandsTMP = [];
$res = CIBlockPropertyEnum::GetList([], ["IBLOCK_ID"=>$IBLOCK_ID, "ID"=>array_keys[$brands]]);
while($arBrand = $res->fetch()){
  $brandsTMP[$arBrand["ID"]] = [
    "ID" => $arBrand["ID"],
    "VALUE" => $arBrand["VALUE"],
    "CNT" => $brands[$arBrand["ID"]]
  ]
}
$brands = $brandsTMP;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы