Имеем информационный блог в котором определёно свойство-список «Производитель» со списком всех производителей продукций публикуемой в каталоге. На сайт подключаем компонент каталог и к нему прикрепляем наш информационный блок. В настройках выставляем в блоке «Настройки фильтра» в графе «Свойства:» пункт «Производитель». После сохранения у нас должна появиться страница с выводом каталога. При переходе в какую либо категории каталога появляется фильтр со списком наших производителей. Как известно в списке фильтрации будут присутствовать все производители которые есть в свойстве информационного блока, но зачем мне весь список производителей если на странице три продукта двух производителей. Ну конечно же незачем.
Задача:
доработайте окно выбора производителя, чтобы в выпадающем списке выводились только те производители, продукция которых присутствует на данной странице, с данными условиями поиска.
Решение:
В комплексном компоненте в инклуде компонента фильтра добавляем еще один элемент в котором будет храниться идентификатор раздела в котором находиться данный пользователь. В моем случае он называется «CN». Далее открываем на редактирование шаблон фильтрации предварительно скопировав его себе в шаблон или удобное Вам место. В нем я заменил содержимое элемента таблицы
#PHP CODE#
$rsItems = CIBlockElement::GetList(
false,
array(
"IBLOCK_TYPE"=>$arParams["IBLOCK_TYPE"],
"IBLOCK_ID"=>$arParams["IBLOCK_ID"],
"IBLOCK_LID"=>SITE_ID,
"ACTIVE"=>"Y",
"SECTION_ID"=>$arParams["CN"],
),
array("PROPERTY_COMPANY"),
false,
array(
"ID",
"NAME",
"PROPERTY_COMPANY",
)
);
echo '<select name="arrFilter_pf[COMPANY]"><option value="">(все)</option>';
while($arItem = $rsItems->GetNext()){
echo '<option value="'.$arItem['PROPERTY_COMPANY_ENUM_ID'].'">'.$arItem['PROPERTY_COMPANY_VALUE'].'</option>';
}
echo '</select>';
Вот так вот у меня теперь на страницы категории выводиться в список только те производители чей товар присутствует на странице.
не понял куда прописать $arParams["CN"]..
CN создается в компоненте. Просто добавляется в массив в файле где подключается компонент, например в index.php вставляем с помощью визуального редактора нужный компонент потом там же переключаем кнопкой на исходный код и Вы там как раз таки и увидите исходный код компонента (массив) — вот как раз так в этот массив добавляется еще один элемент, CN в моем случае
большое спасибо!
заработало)
помогло вместо
«SECTION_ID»=>$arParams["CN"],
вставить
«SECTION_CODE» => $arResult["VARIABLES"]["SECTION_CODE"],
в $_GET[arrFilter_pf][COMPANY] содержится текущее значение фильтра, чтобы отметить текущий брэнд выбранным,