@inviziblll

Как добавить новое свойство элемента инфоблока через скрипт, так чтобы оно было доступно только для определенного раздела?

Вопрос, можно ли , добавить новые свойства товарам (элементам инфоблока) в коде, используя Битрикс API, так чтобы это свойство было доступно только для элементов определенного раздела каталога?

Например есть торговый каталог (инфоблок) - Электроника. В инфоблоке есть разделы Мобильные устройства, Фотоаппараты и Ноутбуки. Параметр Выдержка есть только у товаров из раздела Фотоаппараты. Как можно этот параметр в коде так чтобы у элементов других разделов он не отображался?

Стандартно чтобы свойство отображалось только для конкретного раздела товаров
в настройке инфоблока у свойство снимают галочку Показывать на странице списка элементов 5f96c31fdf480599838785.jpeg
и затем уже у нужного раздела во вкладке Свойства элементов
5f96c33172272291432574.jpeg
указывают нужное свойство.

Вопрос второй, как можно сделать так чтобы после добавления через скрипт новое свойство сразу отображалось во вкладке Товар?

5f96c3e3e6305134692338.jpeg
  • Вопрос задан
  • 1233 просмотра
Пригласить эксперта
Ответы на вопрос 2
gromdron
@gromdron
Работаю с Bitrix24
В коробке такого механизма не поставляется.
Что имеется?

1) Можно ли добавить особенности (feature) к свойству (property)?
Можно. Для этого нужно дополнить их на событии OnPropertyFeatureBuildList. Документации нет, но вам поможет копание ядра в классе \Bitrix\Iblock\Model\PropertyFeature

2) Можно ли сделать так, чтобы какие-то свойства отображались в зависимости от каких-то условий?
И да и нет. В коробке такого механизма не присутствует, однако можно полностью переопределить форму для редактирования элемента.

Но опять же, эти изменения не станут выводить данные в карточку товара (в публичную часть).
Как это обычно делают? Делают общую карточку элемента, а дальше делают несколько вкладок под разные разделы.

Кстати хорошим тоном (да и вообще очень полезно) не делать разделы в рамках одного инфоблока, а делать разные инфоблоки для разных типов товара. Это конечно усложняет обмен с 1С (придется выкинуть то что из коробки и заказать свой), но увеличивает производительность и сразу решает такие проблемы.
Ответ написан
winer
@winer
занимаюсь разработкой сайтов на 1c-bitrix
Насколько помню, есть такой класс CIBlockSectionPropertyLink. У него вот такие методы
CIBlockSectionPropertyLink::Add($SECTION_ID, $PROPERTY_ID, $arLink = array())
CIBlockSectionPropertyLink::Delete($SECTION_ID, $PROPERTY_ID)
CIBlockSectionPropertyLink::DeleteByIBlock($IBLOCK_ID)
CIBlockSectionPropertyLink::DeleteByProperty($PROPERTY_ID)
CIBlockSectionPropertyLink::DeleteBySection($SECTION_ID)
CIBlockSectionPropertyLink::GetArray($IBLOCK_ID, $SECTION_ID = 0, $bNewSection = false)


https://dev.1c-bitrix.ru/community/webdev/user/898...

Не помню насколько точна эта статья. Если что примеры данных можно смотреть в стандартной таблице b_iblock_section_property
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы