Как пересортировать $arResult['ITEMS'] в Битрикс?

Добрый день!
Вопрос - головоломка, для меня точно) поэтому после недели поиска решения решил написать тут.

Есть Битрикс, каталог товаров. Каталог каждый день выгружается от поставщика и поменять структуру мы не можем.
Есть товары которые похожи сами по себе и их нужно объединить в мини секцию, либо показать только один товар, это другой вопрос. Идеально засунуть их в ТП но тоже не позволяет выгрузка так сделать. Вижу только вариант переделать массив.

Т.е. есть страница со списком элементов, в параметрах задано показать 8 элементов:

1. футболка синяя арт.=1
2. футболка зеленая арт.=1
3. футболка красаная арт.=1
4. футболка черная арт.=3
5. футболка синяя арт.=2
6. футболка зеленая арт.=2
7. футболка черная арт.=2
8. футболка черная арт.=3
Вижу восемь элементов, все ок.

Я пересотрировал массив $arResult['ITEMS'] и получил группировку:
[1]
1. футболка синяя арт.=1
2. футболка зеленая арт.=1
3. футболка красаная арт.=1
[2]
1. футболка синяя арт.=2
2. футболка зеленая арт.=2
3. футболка черная арт.=2
[3]
1. футболка черная арт.=3
2. футболка черная арт.=3

Вроде выводиться, вроде ок, но вместо заданных в настройках 8 элементов, показываются 3 (верно, элементов по факту 8 но перегупировали и видим только мини секции).

Казалось бы можно задать показать не 8 а 20 элементов на странице, что бы получить условно теже 8 секций, но при постраничной навигации группировка проходит по разному, разное количество элементов градируется и не понять сколько выводить

Где нужно пересортировать массив что бы получить уже заданное количество?
Пробовал запихнуть пересортировку в result_modifer компонента catalog_section, но это не дало результата
  • Вопрос задан
  • 374 просмотра
Пригласить эксперта
Ответы на вопрос 1
Выборка происходит в component.php или class.php
Там же формируются страницы постраничной навигации.

Т.е. все дальнейшие модификации массива $arResult будут приводить к проблемам с постраничной навигацией.

У вас 2 пути
1) Написать свой компонент и сделать все группировки в component.php до формирования выборки
2) Сделать группировку ранее.
На событиях добавления элемента в инфоблок или же написать агент, который будет обрабатывать элементы и группировать их.
Ответ написан
Ваш ответ на вопрос

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

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