Разработчики битрикса не потрудились научить фильтр каталога понимать поля типа "Привязка к элементам" - или, по служебному, типа "E". Оказалось это вообще не предусмотрено в компоненте catalog.filter.
В данном посте я буду говорить о комплексном каталоге и его фильтре. Я переделал стандартный комплексный каталог уже давно, тогда мне нужно было научить его понимать сколько угодно типов цен и языков. Теперь дошел до фильтра, уже не привыкать.
Пути до файлов компонентов указываю стандартные битриксные, но, естественно, нужно вначале сделать свои компоненты, у вас путь изменится с \bitrix\components\bitrix\catalog.filter\component.php на \bitrix\components\мойсайт\catalog.filter\component.php
Файл \bitrix\components\bitrix\catalog.filter\component.php Строка примерно 304
if (in_array($arProp["CODE"],$arParams["PROPERTY_CODE"]) && in_array($arProp["PROPERTY_TYPE"], array("L", "N", "S")))
сменить на
if (in_array($arProp["CODE"],$arParams["PROPERTY_CODE"]) && in_array($arProp["PROPERTY_TYPE"], array("L", "N", "S", "E")))
Строка с 308
$arResult["arrProp"][$arProp["ID"]]["PROPERTY_TYPE"] = $arProp["PROPERTY_TYPE"];
if ($arProp["MULTIPLE"]=="Y") $arResult["arrProp"][$arProp["ID"]]["MULTIPLE"] = $arProp["MULTIPLE"];
сменить на
$arResult["arrProp"][$arProp["ID"]]["PROPERTY_TYPE"] = $arProp["PROPERTY_TYPE"];
if (in_array($arProp["PROPERTY_TYPE"], array("E")))
$arResult["arrProp"][$arProp["ID"]]["LINK_IBLOCK_ID"] = $arProp["LINK_IBLOCK_ID"];
if ($arProp["MULTIPLE"]=="Y") $arResult["arrProp"][$arProp["ID"]]["MULTIPLE"] = $arProp["MULTIPLE"];
Начиная со строки 469 начинается такая конструкция:
switch ($arProp["PROPERTY_TYPE"])
{
case "L":
...
break;
case "N":
...
break;
case "S":
...
break;
}
Нам нужно добавить в этот свич разбор полей типа E
Дело в том, что у меня в переменной $_SESSION['CLANGUAGE_ID'] хранится текущий язык, а инфоблоки со свойствами товаров имеют свойства с переводами. Например инфоблок свойства с кодом "VOLUME" у меня задан так:
У меня свойство это не имя элемента блока, а его свойство.
Если у вас сделано стандартно - значения свойства это его NAME. В вашем случае следует изменить эти конструкции
Скачать готовый component.php вы можете тут: component.zip В архиве уже переделанный под стандартные настройки файл component.php. Можете потестировать, закинув в \bitrix\components\bitrix\catalog.filter\component.php, только не забудьте сделать резервную копию оригинального component.php.
Добрый день, Дмитрий. Не могли бы выложить файл с компонентом ещё раз? очень нужен выпадающий список, а поскольку компонент существенно изменился с тех пор как вы его переделали, найти куда внести изменения оказалось непосильной задачей пока.. а ваш файл удалён с сервера за давностью(
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».