Недавно начал работать с битриксом, много простых вещей приходится делать с нервами))
Подскажите пожалуйста Михаил, задача такая:
Вывести сопутствующие товары из категорий которые в ручную указали для раздела(или их родителей) в котором находится этот товар.
Пример:
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 ?
Может есть какое то более грамотное решение задачи?