@itemashabanov

Почему сбрасывается выборка товаров в catalog.section?

Привет. Нужно было в комплексном компоненте "новость детально" вывести слайдеры с подборкой товара в статье. Для этого прописал обманку, которая позволяет при редактировании новости вставлять компоненты как на обычную страницу. В коде вызова этих компонентов указываю FILTER_NAME => "FILTER_X", где X порядковый номер слайдера. В свойствах инфоблока создаю свойства с именем фильтра "FILTER_X". В файле result_modifier.php шаблона компонента новостей проверяю, заполнено ли это свойство в статье и если да, то делаю так:
foreach($arFilterName as $val) {
	if(!empty($arResult["PROPERTIES"][$val]["VALUE"])) {
		$GLOBALS[$val] = ["ID" => $arResult["PROPERTIES"][$val]["VALUE"]];
	}
}

$arFilterName - массив вида ["FILTER_1", "FILTER_2"];
Если сбросить кеш - все работает, но при обновлении страницы - просто все подряд товары выводятся в слайдере. Как будто при обновлении опустошается массив $GLOBALS с фитльтрами и получается неверная выборка. Посоветуйте, как можно решить проблему, пожалуйста. Спасибо!
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
@PetrPo
если верстка позволяет и DETAIL_TEXT все-таки можно перенести в component_epilog могу предложить ставить макросы в детальном описании, там где должна быть карусель. Например:

Это мое тестовое детальное описание #KARUSEL_1# Это мое тестовое детальное описание #KARUSEL_2#

В шаблоне компонента выясняешь сколько каруселей через preg_match_all, в цикле в буфер записываешь catalog.section-ы со своими фильтрами в переменные, а потом реплейсишь эти макросы, раньше точно так делали когда галерею изображений надо было вставлять в середину детального описания.
Здесь в моем ответе пример такого реплейса для цен. У тебя посложнее будет, но аналогично

ob_start();
  // вызов компонента
    $karusel_1 = ob_get_contents();
ob_end_clean();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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