Свойство "Привязка к разделам текущего инфоблока"

Рейтинг: 22.4594  
На голосовании
Предложил Царук Антон 16.12.2016 11:42:05

Свойство "Привязка к разделам текущего инфоблока"

Вопрос актуален уже несколько лет. По причине какого-то глобального архитектурного косяка, при настройке свойства инфоблока "Привязка к разделам" система не позволяет выбирать текущий инфоблок, для которого это свойство заводится.

Мы сталкиваемся с необходимостью такой привязки почти в каждом проекте. Думаю, что остальные - тоже. В большинстве случаев - забиваем, и используем обычное числовое поле, куда контент-менеджер указывает ID раздела. Но это дико неудобно.

Может все же решить эту проблему? Ведь это так просто - создать еще один тип свойства, и хранить его значение не так, как в текущем (с проблемами архитектуры), а просто как числа - ID разделов...

Рейтинг: 0  
Царук Антон 16.12.2016 14:28:43
Коллеги, паника была преждевременной.

В БД можно проставить поле LINK_IBLOCK_ID на нужный нам раздел - и все работает. Более того - раньше при обновлении свойства в настройках инфоблока такая установка слетала. Теперь - не слетает. Так что все ок :)
Рейтинг: 0.0875  
Жуков Евгений 16.12.2016 17:45:41
Будет слетать.
Рейтинг: 0  
Царук Антон 16.12.2016 17:47:15
Вроде пока держится ;)
Рейтинг: -1  
Жуков Евгений 16.12.2016 17:49:20
Как звучит Ваша задача?
Рейтинг: 2  
Царук Антон 16.12.2016 17:51:33
Добавить в свойство инфоблока "Привязка к разделам" и "Привязка к разделам с автозаполнением" возможность выбора инфоблока, для которого данное свойство задается
Рейтинг: 1  
Царук Антон 16.12.2016 17:53:51
Ну а если серьезно, вот пример самой банальной задачи :)

Есть каталог товаров. В нем некоторые разделы - это разделы с аксессуарами к товарам из других разделов. Задача - выводить в карточке определенного товара аксессуары из определенного раздела каталога.  
Рейтинг: 0  
Царук Антон 18.12.2016 16:45:19
К сожалению, Жуков Евгений, Вы были правы - косяки вылазят. А именно - элементы, для которых установлено свойство, начинают появляються в разделах, на которые указывают значения свойства... В публичной части это, в целом, можно устранить, но вот в админке - никак, и это весьма прескорбно...
Рейтинг: 0  
Царук Антон 18.12.2016 16:45:31
К сожалению, Жуков Евгений, Вы были правы - косяки вылазят. А именно - элементы, для которых установлено свойство, начинают появляються в разделах, на которые указывают значения свойства... В публичной части это, в целом, можно устранить, но вот в админке - никак, и это весьма прескорбно...
Рейтинг: 0  
Царук Антон 20.12.2016 16:30:24
Есть временное решение.

В файле iblock_list_admin.php в блоке построения таблицы с элементами и разделами добавить небольшой код:
// List build
while($arRes = $rsData->NavNext(true, "f_"))
{ // после этого начинается код, который надо добавить
   
   if(($arRes['TYPE']=='E') and $arRes['ID']) {
      $arItemSections = array();
      $obItemSections = CIBlockElement::GetElementGroups($arRes['ID'], true, array('ID'));
      while ($arItemSection = $obItemSections->Fetch()) {
         $arItemSections[] = $arItemSection['ID'];
      }
      if(!in_array($_REQUEST['find_section_section'], $arItemSections)) {
         continue;   
      }
   }
 


Аналогично можно поступить и в публичных компонентах списка элементов. Единственный косяк - это работа постраничной навигации. Но это не столь критично...
Рейтинг: 0  
Царук Антон 20.12.2016 16:33:52
Поправочка :)
if(($arRes['TYPE']=='E') and $arRes['ID'] and (intval($_REQUEST['find_section_section'])>0)) {
 
Рейтинг: -3  
Жуков Евгений 21.12.2016 10:52:44
В ближайшее время не обещаем - нет в планах переработки этого функционала. А Вашу задачу я бы решал через пользовательские свойства раздела.
Рейтинг: 0.8902  
Панчук Сергей 24.05.2018 11:22:36
Такой функционал нужен.
Рейтинг: 0.8902  
К Роман 27.12.2018 14:51:02
Тоже актуально. Подскажите: в настоящее время есть решение этой проблемы?
Рейтинг: 1  
Дасманов Константин 22.05.2020 14:28:30
сейчас тоже понадобился такой функционал