Актуально для компонента store.catalog.filter в БУС 10.0.8.
Думаю всем известна проблема недоработанного фильтра, когда пользовательское свойство типа "Привязка к элементам в виде списка" в фильтре показывается простым inputbox для ввода ID значения свойства. Это лечится правкой кода компонента /bitrix/components/bitrix/catalog.filter/component.php (перед правкой следует скопировать компонент в новое пространство имен, например, /bitrix/components/my/store.catalog.filter).
Итак, после 333 строки (здесь и дальше идет нумерация в старом файле)
добавим строку
Далее, после строк 344-345
добавим блок
И, наконец, в районе строки 610
добавим
В моем случае организация структуры следующая. В одном инфоблоке есть товары с пользовательским свойством, привязанным к втором инфоблоку "производители". После вышеперечисленных правок в фильтре появился список всех производителей - элементов инфоблока "производители".
UPD: Актуализировал на 27.07.2011
Думаю всем известна проблема недоработанного фильтра, когда пользовательское свойство типа "Привязка к элементам в виде списка" в фильтре показывается простым inputbox для ввода ID значения свойства. Это лечится правкой кода компонента /bitrix/components/bitrix/catalog.filter/component.php (перед правкой следует скопировать компонент в новое пространство имен, например, /bitrix/components/my/store.catalog.filter).
Итак, после 333 строки (здесь и дальше идет нумерация в старом файле)
$arResult["arrProp"][$arProp["ID"]]["PROPERTY_TYPE"] = $arProp["PROPERTY_TYPE"]; |
добавим строку
if ($arProp["USER_TYPE"]) $arResult["arrProp"][$arProp["ID"]]["PROPERTY_TYPE"] = $arProp["USER_TYPE"]; |
Далее, после строк 344-345
$arResult["arrProp"][$arProp["ID"]]["VALUE_LIST"] = $arrEnum; } |
добавим блок
if ($arProp["USER_TYPE"] == "EList") { $arrEnum = array(); $rsEnum = CIBlockElement::GetList(Array("sort"=>"asc"), Array("IBLOCK_ID" => $arProp["LINK_IBLOCK_ID"], "ACTIVE" => "Y"), false, false, Array("ID", "NAME")); while($arEnum = $rsEnum->Fetch()) { $arrEnum[$arEnum["ID"]] = $arEnum["NAME"]; } $arResult["arrProp"][$arProp["ID"]]["VALUE_LIST"] = $arrEnum; } |
И, наконец, в районе строки 610
case "L": |
добавим
case "EList": |
В моем случае организация структуры следующая. В одном инфоблоке есть товары с пользовательским свойством, привязанным к втором инфоблоку "производители". После вышеперечисленных правок в фильтре появился список всех производителей - элементов инфоблока "производители".
UPD: Актуализировал на 27.07.2011