ragnar_ok
@ragnar_ok

Как заставить bitrix:news.list работать с bitrix:catalog.filter при том, что bitrix:catalog.filter расположен ниже bitrix:news.list?

На странице вызваны компоненты bitrix:news.list и bitrix:catalog.filter.

Нужно передать значение переменной, которую возвращает bitrix:news.list в $arParams bitrix:catalog.filter. Я решил проблему нижеуказанным образом. Однако теперь фильтр, конечно, не работает, так как arFilter теперь формируется ниже bitrix:news.list.

Эта проблема каким-то образом решаема?

$APPLICATION->ShowViewContent("filter");
$return = $APPLICATION->IncludeComponent(
	"bitrix:news.list",
	"",
	Array(
                "FILTER_NAME" => "arFilter",
		// ...
	)
);
ob_start();
$APPLICATION->IncludeComponent(
    "bitrix:catalog.filter",
    "",
    Array(
                "FILTER_NAME" => "arFilter",
		'RETURN' => $return,
    	// ...
    ),
    $component
);
$APPLICATION->AddViewContent("filter", ob_get_clean());


Пояснение:
bitrix:news.list кастомизирован. Теперь он возвращает свой $arParams["AJAX_ID"]. Мне нужно этот AJAX_ID передать в bitrix:catalog.filter. Используется CAjax::GetForm(). То есть мне нужно передать id обновляемой области в bitrix:catalog.filter. Сейчас мне приходится хардкодить:
CAjax::GetForm("", "comp_7409d65e7fac8b82c3fb20e6ad6a4bca", "7409d65e7fac8b82c3fb20e6ad6a4bca");
  • Вопрос задан
  • 55 просмотров
Пригласить эксперта
Ответы на вопрос 1
ragnar_ok
@ragnar_ok Автор вопроса
Похоже на то, что без двойного вызова одного и того же компонента задача не решаема.
Проблему решил используя jsAjaxUtil:
jsAjaxUtil.InsertFormDataToNode(this, 'comp_' + window.bxajaxid, false);
Ответ написан
Ваш ответ на вопрос

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

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