Недавно начал работать с битриксом, много простых вещей приходится делать с нервами))
Подскажите пожалуйста Михаил, задача такая:
Вывести сопутствующие товары из категорий которые в ручную указали для раздела(или их родителей) в котором находится этот товар.
Пример:
http://joxi.ru/Y2LvYMoi9y9jgr
Все категории получаю так, прохожу по всем родителям(по цепочке) товара и получаю их поле UF_RELATED ну и складываю все в массив $RELATED
Код |
---|
$RELATED = array(); $nav = CIBlockSection::GetNavChain(false, $arResult["IBLOCK_SECTION_ID"], array("ID", "IBLOCK_ID", "NAME", "DATE_ACTIVE_FROM")); while($arItem = $nav->Fetch()){ $dbSectionR = CIBlockSection::GetList(array(), array("ID" => $arItem["ID"], "IBLOCK_ID" => $arParams["IBLOCK_ID"]), false ,array("ID", "IBLOCK_ID", "NAME", "UF_RELATED")); if($arSectionR = $dbSectionR->GetNext()){ if(!empty($arSectionR['UF_RELATED'])){ foreach($arSectionR['UF_RELATED'] as $k => $v){ $RELATED[] = $v; } } } } |
Чтож категории есть. Теперь стоит задача выводить по 2-4 товара рандомно с каждой категории.
Т.к. я не понял как в виде массива передать ИДшники разделов для bitrix:catalog.section чтобы он сам вывел, пошел в документацию читать про CIBlockElement::GetList.
написал вот такой код
Код |
---|
foreach($RELATED as $k => $v){ $arOrderR = Array("RAND " => "ASC"); $arSelectR = Array("ID", "NAME"); $arFilterR = Array("IBLOCK_ID"=> $arParams["IBLOCK_ID"], "SECTION_ID"=> $v , "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y" ); $res = CIBlockElement::GetList($arOrderR, $arFilterR, false, array("nTopCount"=>3), $arSelectR); while($ob = $res->GetNextElement()) { $arFieldsR = $ob->GetFields(); print_r($arFieldsR); } } |
http://joxi.ru/BA0V0jltJGJ5Em
Подскажите почему так?
Нельзя ли как то передавать id разделов или id товаров на крайний случай чтобы передавать их в модуль bitrix:catalog.section ?
Может есть какое то более грамотное решение задачи?