@Westoura

Как убрать свойства из умного фильтра?

В интернет-магазине есть страница бренда, на которой выведены товары, отфильтрованные по названию бренда. Товары на этой странице можно отфильтровывать умным фильтром, но внутрь него попадают все свойства, которые подтягиваются со всего товарного каталога. Например, остается доступной сортировка товаров по бренду, хотя это свойство не должно выводится, потому что пользователь уже находится на странице с отфильтрованными товарами. Как убрать лишние свойства из умного фильтра на странице бренда?

Товары на странице бренда сортируются с помощью свойства "FILTER_NAME" => "arrFilterBrand". Но для умного фильтра этого недостаточно.

Фильтрация каталога по бренду:
$brandName = $arResult["NAME"];
global $arrFilterBrand;
$arrFilterBrand = Array("PROPERTY_BRAND" => $arResult["ID"]);
?>


Код умного фильтра

<?$APPLICATION->IncludeComponent(
   "bitrix:catalog.smart.filter",
   Array(
      "CACHE_GROUPS" => "Y",
      "CACHE_TIME" => "36000000",
      "CACHE_TYPE" => "A",
      "CONVERT_CURRENCY" => "N",
      "DISPLAY_ELEMENT_COUNT" => "Y",
      "FILTER_NAME" => "arrFilterBrand",
      "FILTER_VIEW_MODE" => "vertical",
      "HIDE_NOT_AVAILABLE" => "Y",
      "IBLOCK_ID" => "20",
      "PAGER_PARAMS_NAME" => "arrPager",
      "PREFILTER_NAME" => "smartPreFilter",
      "PRICE_CODE" => array(),
      "SAVE_IN_SESSION" => "N",
      "SECTION_CODE" => "",
      "SECTION_DESCRIPTION" => "-",
      "SECTION_ID" => $_REQUEST["SECTION_ID"],
      "SECTION_TITLE" => "-",
      "SEF_MODE" => "N",
      "TEMPLATE_THEME" => "blue",
      "XML_EXPORT" => "N"
   )
);?>


Вывод списка товаров:

<?$APPLICATION->IncludeComponent(
   "bitrix:catalog.section",
   Array(
      "FILTER_NAME" => "arrFilterBrand",
...
  • Вопрос задан
  • 2206 просмотров
Решения вопроса 2
winer
@winer
занимаюсь разработкой сайтов на 1c-bitrix
На странице бренда фильтрацию по бренду надо задавать через параметр умного фильтра PREFILTER_NAME.
Этот параметр работает схожим образом с FILTER_NAME.

глобальный массив PREFILTER_NAME нужно определить до catalog.smart.filter и передать в него фильтр по бренду. С ним умный фильтр сначала выполнит предварительную фильтрацию, которая не будет отображаться в шаблоне. Другие бренды пропадут.
Ответ написан
Комментировать
@anton99zel Куратор тега 1С-Битрикс
29а класс средней школы №7
<?
$smartPreFilter = Array("PROPERTY_BRAND_VALUE" => $Переменная_с_брендом);
$APPLICATION->IncludeComponent(
	"bitrix:catalog.smart.filter"...
....
?>

Либо Бренды сделать подразделами товарного каталога, тогда в фильтре будут параметры, которые присуще элементам из конкретного подраздела.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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