Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Привязка к элементам

00 голосов
6
Подскажите пожалуйстка как в компоненте получить знаечение привязки к элементу?
тоесть я привязываю элемент одного инфоблока к элементу другого, с помощью каких функция можно получить ид элемента с которым осуществляется связь?
Уже все перепробовал..
спросил 21 Авг, 13 от OLEGI4 (300 баллов)

6 Ответы

00 голосов
к примеру:

Типы информ. блоков - каталог(или что там у вас) - закаладка Свойства - добавить свойсто -фотогалерея - тип= число. Код = PHOTO - возможно было выбрать и другой тип. (там есть привязка к элементу, привязка к разделу)
затем в инфомодуле фотогалерея насоздавал папок(разделов) - каждая из них получила свой id.
На странице редактирования элемента каталога - на первой закладке "Элемент" -
Код
Значения свойств
: в поле фотогалерея - указал id соответвуещей папки из инфомодуля фотогалереи.
Далее зависит от того как надо выводить.
Раскажу как связать 2 разные страницы:
Необходимо кастомизировать шаблон для вывода элемента каталога.
Вместо прямого вывода дополнительных полей подправил код и заменил его на код вида:
Код
echo '<a href="/content/gallery/index.php?SELCTION_ID='.$arResult["PROPERTIES"]["PHOTO"]["VALUE"].'">Фотогалерея</a>'; 


В результате имеем ссылку на ту страницу с фотогалереей. На страницу, на которую идет переход необходимо разместить компонент bitrix.photo.section.
Так как по умолчанию в поле секции стоит $_REQUEST["SECTION_ID"] , на странице будут отображатся только фотогафии выбранной(/связанной по id) папаки.
ответил 21 Авг, 13 от Grimmi (2,560 баллов)
00 голосов
хм.. по видимому наврал.. че то сам с этой проблемой столкнулся.
ответил 30 Окт, 13 от Grimmi (2,560 баллов)
00 голосов
В принципе все правильно написали. если точнее то так:
Например используем bitrix:news.list, в параметрах компонента -> Настройки списка -> Свойства, выбираем поле в котором хранится связь (например [st_vs_tov]Связь статьи с товаром)
а в шаблоне после
Код
<?foreach($arResult["ITEMS"] as $arItem):?>

пишем
Код
<?echo "<pre>".print_r($arItem["PROPERTIES"], True)."</pre>";?>

или
Код
<?echo "<pre>".print_r($arItem["PROPERTIES"]["st_vs_tov"], True)."</pre>";?>

и получаем массив переменных
Код
........
[USER_TYPE] => 
            [PROPERTY_VALUE_ID] => Array
                (
                    [0] => 1983
                )

            [VALUE] => Array
                (
                    [0] => 362
                )

            [DESCRIPTION] => Array
                (
                    [0] => 
                )

            [VALUE_ENUM] =>
........
ответил 04 Фев, 14 от malagoi (380 баллов)
00 голосов
Сделал еще более хитрее.
в общем создал поле, тип "привязка к элементу", в конце еще есть кнопка [...] там можно сразу выбрать информационный блок.
У элемента появляется поле типа input + кнопка которая уже в разделе указанного инфоблока даст выбрать нужный элемент - связь пойдет по id выбранного элемента.
Далее - как написано выше в шаблоне вывода - где выводятся элементы (детально или раздела) (комент: непонятно почему поля типа "привязка к элементам", "привязка к разделам"," привязка к элементам типа списка" -в поле вывода дополнительных полей не отображаются) кастомизируем шаблон и лезем в код.
Находим вывод элемента и ниже правим код до такого вида:
Код
<?foreach($arElement["DISPLAY_PROPERTIES"] as $pid=>$arProperty):?>
 <?if($arProperty["CODE"]=='object'){?> <!-- тут название своего дополнительного кода. Можно и по другому)-->
  <?=$arProperty["DISPLAY_VALUE"];?>
 <?}else{?>
<?=$arProperty["NAME"]?>:&nbsp;   <? if(is_array($arProperty["DISPLAY_VALUE"]))
      echo implode("&nbsp;/&nbsp;", $arProperty["DISPLAY_VALUE"]);
   else
      echo $arProperty["DISPLAY_VALUE"];?><br />
<?}?>

В принципе - всё.
Выведет ссылку для перехода к связанному элементу - вид ссылки задавать в настройках того инфоблока с которым связываем. В качестве имени будет выведено имя элемента с которым связали.
ответил 24 Май, 14 от Grimmi (2,560 баллов)
00 голосов
Цитата
Николай Санников пишет:
В качестве имени будет выведено имя элемента с которым связали.

А что делать если в качестви имени нужно вывести другое свойство связанного элемента? :?:
ответил 20 Сен, 14 от Lisoska (100 баллов)
00 голосов
Цитата
dimitr пишет:
А что делать если в качестви имени нужно вывести другое свойство связанного элемента?

Выбрать связанный элемент через CIBlockElement::GetByID() и вывести его свойство. Выбирать элемент лучше в result_modifier.php в шаблоне компонента.
ответил 24 Янв, 15 от Ly (4,580 баллов)

Похожие вопросы

+1 голос
1 ответ
+1 голос
1 ответ
0 голосов
7 ответов
спросил 21 Авг, 13 от SmailRat (160 баллов)
0 голосов
7 ответов
спросил 20 Май, 13 от Sairys (160 баллов)