Почему не работает фильтр для выборки элементов инфоблока по ID?

Задача вывести “Сопутствующие товары” каталога – элементы инфоблока по ID. Сопутствующие товары- привязываются через свойство - в результате получаю массив данных с ID – необходимых товаров.
$arResult["PROPERTIES"]["ASSOCIATED"]["VALUE"]
Array
(
[0] => 1400
[1] => 966
[2] => 997
[3] => 1002
[4] => 1009
[5] => 1013
[6] => 1017
[7] => 1019
[8] => 1012
[9] => 1000
)
Для вывода избранных элементов использую компонент - catalog.section, с настройками:
"USE_FILTER" => "Y",
"FILTER_NAME" => "arrAssociated",

И фильтром, куда передаю массив с данными ID необходимых товаров :
$GLOBALS["arrAssociated"]=array('ID' => $arResult["PROPERTIES"]["ASSOCIATED"]["VALUE"]);

Не срабатывает, товары по фильтру не выводятся, при этом если передать данные ID в виде –

$GLOBALS["arrAssociated"] = array('ID' => array(1400, 966, 997, 1002, 1009))
Все отрабатывает успешно.

Как данные из массива => $arResult["PROPERTIES"]["ASSOCIATED"]["VALUE"] привести к правильному виду, что бы фильтр отрабатывал.
  • Вопрос задан
  • 261 просмотр
Решения вопроса 1
@voland700 Автор вопроса
Проблема решена - способы решения находятся в комментариях.
Суть проблемы в том, что данные содержащиеся в $arResult в файле component.epilog.php недоступны. Для передачи необходимых параметров содержащихся $arResult необходимо их пробросить из кешируемой области компонента в component_epilog.php:
$cp = $this->__component;
if (is_object($cp))
{
  $cp->arResult["ASSOCIATED"] = $arResult["PROPERTIES"]["ASSOCIATED"]["VALUE"];
  $cp->SetResultCacheKeys(array("ASSOCIATED")); //cache keys in $arResult array
}


Либо передавать через $arParams параметры настроек компонента:
$templateData["ASSOCIATED"] = $arResult["PROPERTIES"]["ASSOCIATED"]["VALUE"];
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы