Цитата |
---|
написал: В итоге вы хотите что получить? товар(ы) у которых выбраны данные свойства или названия используемых свойств (их ID) у конкретного товара? |
11.04.2022 16:58:13
Вот значит вам делать нужно запрос к товарам, а не к настройкам инфоблока.
Ссылка на API в 7-ом посте. Или если для единичного элемента (в вашем случае товара) |
|
|
|
11.04.2022 16:59:49
У меня есть подозрение, что правильный код должен выглядеть примерно так:
$property_enums = CIBlockPropertyEnum::GetList(array("SORT" => "ASC"), Array("IBLOCK_ID"=>2, "PROPERTY_ID"=>43)); while($enum_fields = $property_enums->GetNext()) { if(GetFlag($enum_fields["VALUE"], "SELECT") == true) $tabTagsContent .= "<span class='tag'>". $enum_fields["VALUE"] . " </span>"; } GetFlag - Моя абстрактная функция. Как она должна быть на самом деле, я и пытаюсь сейчас узнать :/ |
|
|
|
11.04.2022 17:01:35
Либо в инфоблоке в настройках свойства поставить галочку где вам нужно выводить данные, либо в настройке компонента добавить те свойства которые вы хотите публиковать. |
|||
|
|
11.04.2022 17:04:21
Блин, не нужно меня тыкать носом в документацию. Я умею читать и уже ее перелопатил всю. НЕТ ТАМ ОТВЕТА НА МОЙ ВОПРОС! Мне нужна тупо одна строчка кода. Если знаете - напишите. Если нет, не надо флудить!
|
|
|
|
11.04.2022 17:05:24
Допустим у вас есть некий список из 100 значений. В реальности вы используете только 10-ть значений. При таком коде вы выведите 100-о табов, т.к. делаете запрос не к данным а к настройкам. Правильно было бы запросить список товаров и используемых свойств, и потом просто убрать дубликаты свойств. В итоге вы получите только те свойства которые реально используются. Просто в фильтре, указывайте минимум полей. Так же можно использовать готовый массив $arResult если в нем выводится нужно вам свойство, и не нужно делать ни каких дополнительных запросов |
|||
|
|
12.04.2022 03:39:51
Мне не до конца понятно, чего вы хотите в итоге добиться.
Вам в принципе нужны названия свойств из списка, которые хоть где-то в каталоге хоть в одном товаре используются? Если да, то зачем (если не секрет)? Навскидку, не особо вникая - такой код покажет какие выбраны в элементах свойства:
Если в каталог в фильтр вкорячить что-то типа $GLOBALS['arrFilterMyProp'] = array(">PROPERTY_16_VALUE"=>0); то каталог будет показывать только элементы с заполненым свойством. Если нужно получить в принципе те свойства из списка, которые вообще где-то в товаре используются (заполнены) - то тут надо смотреть, навскидку не подскажу элегантное решение, не факт что таблица со списком свойств вообще имеет эти данные (могу ошибаться), может эти данные есть только у таблицы с элементами. Неэлегантно - запрашивайте все свои свойства по значению через гетлист выше по одному, в фильтр что-то типа "=PROPERTY_16_VALUE"=>"Новинка". Если гетлист вернет одно значение - то данное свойство в принципе используется в каталоге, поместите его в отдельный массив, и так можно обойти все свойства по одному и получить массив используемых, если их у вас немного, если много - надо подумать. Лучше все это делать на D7. |
|||
|
|
12.04.2022 10:49:38
|
|||
|
|
12.04.2022 13:21:57
Передайте в фильтр айди товаров из деталки (или ску) - получите установленные в этих товарах значения списочного свойства.
$arFilter = Array("=ID"=>$ElementID, "IBLOCK_ID"=>8); Если надо товара - то айди товара и айди ИБ товаров, если надо ску - то можно массив ID ску и соответственно ИБ ску. |
|
|
|
12.04.2022 17:37:19
Если я вас правильно понял, то вы хотите получить какие варианты отмечены из всего списка. Т.е. типа как у умного фильтра, когда он отображает только значения которые точно заполнены у элементов.
CIBlockPropertyEnum::GetList - этим методом вы получите только все варианты, там нет отмечено оно или нет у какого-то элемента. Для того чтобы узнать какое из возможных вариантов отмечено нужно работать с элементами, а из значений списка брать только нужные вам соответсвия. На вскидку не скажу, попробуйте посмотреть как это в умном фильтре сделано или группировку по свойству для getlist. |
||||
|
|
|||