Получить список выбранных свойств умного фильтра Bitrix

Получить список выбранных свойств умного фильтра Bitrix

Содержимое:

Давайте рассмотрим как можно вывести все выбранные свойства в умном фильтре в Bitrix. Данную реализацию я использую для прописание уникальных title и description на страницах фильтров. Я буду создавать массив с названиями выбранных параметров фильтров и выводить их в meta теги.

Код я записываю в result_modifier в шаблоне компонента catalog.section. Все данные у нас находятся в $GLOBALS[‘arrFilter’]. Здесь записывается массив вида…

array(2) {
  ["=PROPERTY_345"]=>
  array(2) {
    [0]=>
    string(4) "4388"
    [1]=>
    string(4) "4389"
  }
  ["=PROPERTY_346"]=>
  array(3) {
    [0]=>
    string(4) "4392"
    [1]=>
    string(4) "4393"
    [2]=>
    string(4) "4394"
  }
}

Получаем информацию свойств по идентификаторах их значениям с помощью метода CIBlockPropertyEnum::GetList.

/* массив для свойств товаров */
$arrMetaFilter = array();

/* проходимся по данным фильтра */
foreach($GLOBALS['arrFilter'] as $key=>$val) {

    /* получаем информацию по id значения свойств */
    $property_enums = CIBlockPropertyEnum::GetList(Array("DEF"=>"DESC", "SORT"=>"ASC"), Array("IBLOCK_ID"=>5, "ID"=> $val));

    while($enum_fields = $property_enums->GetNext()) {
        $arrMetaFilter[$enum_fields["PROPERTY_CODE"]]["name_prop"] = $enum_fields["PROPERTY_NAME"];
        $arrMetaFilter[$enum_fields["PROPERTY_CODE"]]["value"][] = $enum_fields["VALUE"];
    }

}

По итогу мы получаем следующий массив…

array(2) {
  ["TIP_DIVANA"]=>
  array(2) {
    ["name_prop"]=>
    string(19) "Тип дивана"
    ["value"]=>
    array(2) {
      [0]=>
      string(18) "Модульные"
      [1]=>
      string(19) "П-образные"
    }
  }
  ["TSVET"]=>
  array(2) {
    ["name_prop"]=>
    string(8) "Цвет"
    ["value"]=>
    array(3) {
      [0]=>
      string(14) "Бежевый"
      [1]=>
      string(10) "Белый"
      [2]=>
      string(18) "Бирюзовый"
    }
  }
}
На этом всё!
Больше интересных статей в нашей группе - https://vk.com/progtime
Вы так же можете разместить свой вопрос на нашем форуме, где другие программисты смогут вам помочь в решение вашей задачи - https://vk.com/prog_time
Так же прокачивайте свои навыки на нашем канале - https://www.youtube.com/c/ProgTime