Давайте рассмотрим как можно вывести все выбранные свойства в умном фильтре в 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(
["DEF"=>"DESC", "SORT"=>"ASC"],
["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) "Бирюзовый"
}
}
}