@Viran

Как ограничить вывод свойств умного фильтра в компоненте поиска search.page?

В компоненте поиска search.page находятся умный фильтр и catalog.section. Массив ID полученных в результате поиска передаю сначала в FILTER_NAME умного фильтра, и потом в catalog.section. Сам фильтр работает нормально, результаты полученные в результате поиска фильтруются, но в самом фильтре находятся абсолютно все свойства инфоблока. Например, при любом поиске диапозон цены всегда от 1р до 69 196р. , хотя , допустим в результате поиска вывелись товары цена которых находится от 2р. до 1 698р. Как сделать так что бы свойства умного фильтра менялись в зависимости от поиска?

Читал вот это . По факту у меня сделано точно также..но все равно выводит полный список свойств инфоблока при поиске.

https://pastenow.ru/2B08T
  • Вопрос задан
  • 540 просмотров
Решения вопроса 1
@Viran Автор вопроса
Хм..в общем ответ нашел сам. Может кому в будущем пригодится. Суть в том что необходимо немного переписать компонент умного фильтра. Для начала ID результатов поиска заносим в глобальную переменную $GLOBALS["arIdst"]. Далее редактируем файл component.php в catalog.smat.filter(естественно, сначала переместить компонент в свою папку дабы не затерся при обновлении). Находим такую строчку

$rsElements = CIBlockElement::GetPropertyValues($this->IBLOCK_ID, $arElementFilter, false, array('ID' => $this->arResult["PROPERTY_ID_LIST"]));

У меня это 127 строка. и вместо $arElementFilter указываем $GLOBALS["arIdst"] , т.е. строка примет вид

$rsElements = CIBlockElement::GetPropertyValues($this->IBLOCK_ID, $GLOBALS["arIdst"], false, array('ID' => $this->arResult["PROPERTY_ID_LIST"]));

Аналогично делаем для цены

$rsElements = CIBlockElement::GetList(array(), $arElementFilter, false, false, $arSelect); (227 строка) заменяем на

$rsElements = CIBlockElement::GetList(array(), $GLOBALS["arIdst"], false, false, $arSelect);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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