2020-11-14 10:48:00
78
1312312

2020-11-14 11:08:00

Приветствую, нужно объединить товары по свойству в один товар при выводе, задача частично решена таким образом компонент catalog.section код в result_modifier.php

$newArrItem = array();

foreach($arResult['ITEMS'] as $key => $item){

$id_group = CIBlockElement::GetProperty(1, $item['ID'], array("sort" => "asc"), Array("CODE"=> "ID_GROUP"));
$id_group_val = $id_group
->Fetch();

if(!empty($id_group_val['VALUE'])){

foreach($newArrItem as $val){

$id_group_new = CIBlockElement::GetProperty(1, $val['ID'], array("sort" => "asc"), Array("CODE"=> "ID_GROUP"));
$id_group__new = $id_group_new->Fetch();

if($id_group_val['VALUE'] == $id_group__new['VALUE']){
$true__item = true;
} }

if($true__item == false)
$newArrItem[] = $item;
}

$true__item = false;
}

$arResult['ITEMS'] = $newArrItem;

Появилась проблема с пагинацией, на одной странице может оказаться 1 товар т.к. все 12 товаров были одной группы.

У меня есть идея получить сколько товаров на странице осталось, потом сколько должно быть и получать товары с других страниц прогоняя через foreach, но опять же это будет нагрузка и на последних страницах не останется товара.


Пробовал изменять файл class.php компонента catalog.section 
Но не могу сообразить в $elementIterator содержится что и в $arResult['ITEMS'] 

protected function getElementList($iblockId, $products)
{
$elementIterator = parent::getElementList($iblockId, $products);

if (
!empty($elementIterator)
&& $this->arParams['BY_LINK'] !== 'Y'
&& !$this->arParams['SHOW_ALL_WO_SECTION']
&& !$this->arParams['USE_MAIN_ELEMENT_SECTION']
)
{
$elementIterator->SetSectionContext($this->arResult);
}
        
return $elementIterator;
}

Комментарии (46)