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

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

00 голосов
7
Наверняка тема поднималась. Требуется получить связанные элементы в шаблоне.В принципе решение тут 

Код
 $arFilter = array('IBLOCK_ID' => ID инфоблока с картинками,'ID' => array(здесь все ID привязанных элементов));
$rsItems = CIBlockElement::GetList(array(),$arFilter);
while ($arItem = $rsItems->GetNext())
{
$arItem['DETAIL_PICTURE'] = CFile::GetFileArray($arItem['DETAIL_PICTURE']);
}


но остался 1 вопрос, ГДЕ ВЗЯТЬ  IBLOCK_ID ? Ведь привязка может быть к разным инфоблокам.
Если быть конкретнее, то мне нужно получить ссылку на связанный элемент, причем он может быть из разных инфоблоков.
спросил 21 Авг, 13 от SmailRat (160 баллов)

7 Ответы

00 голосов
Прекрасно будет работать и без указания IBLOCK_ID в фильтре.
ответил 21 Авг, 13 от Ly (4,580 баллов)
00 голосов
Уф, действительно ,  извиняюсь за невнимательность smile:oops:.
А ссылку не подскажите как получить ?
Заранее спасибо.
ответил 31 Окт, 13 от SmailRat (160 баллов)
00 голосов
Странно , но приведенная выше конструкция не находит элемент, даже если ID вручную подставить.В шаблоне компонента можно ее использовать (bitrix::news.list)?
Вот мой код


Код
<?
            if (!(empty($arItem["PROPERTIES"]["BANNER_URL"]["VALUE"]))){
                    $id_url[] = $arItem["PROPERTIES"]["BANNER_URL"]["VALUE"];
                    $myFilter = array("ID" => $id_url);
                    $link_element = CIBlockElement::GetList(array(),$myFilter);
                    while ($my_res = $link_element->GetNext()) {
                        $link_url[] = $my_res["DETAIL_PAGE_URL"];
                    }
                }
                else {
                    $link_url[] =  "/our_actions.php";
                }
            ?>
 


$link_element пустой smile:(
ответил 05 Фев, 14 от SmailRat (160 баллов)
00 голосов
Цитата
AlexMist пишет:
if (!(empty($arItem["PROPERTIES"]["BANNER_URL"]["VALUE"]))){
$id_url[] = $arItem["PROPERTIES"]["BANNER_URL"]["VALUE"];

Это не будет работать. У вас справа и так массив, а вы его запихиваете как элемент массива.

Я бы написал так:

Код
if (is_array($arItem["PROPERTIES"]["BANNER_URL"]["VALUE"]) && count($arItem["PROPERTIES"]["BANNER_URL"]["VALUE"]))
{
   $res = CIBlockElement::GetList(
      false,
      array(
         'ID' => $arItem["PROPERTIES"]["BANNER_URL"]["VALUE"],
      ),
      false,
      false,
      array('ID', 'DETAIL_PAGE_URL')
   );
   while ($el = $res->GetNext())
      $link_url[] = $el['DETAIL_PAGE_URL'];
}
else
   $link_url[] =  "/our_actions.php"; 

Предполагается, что BANNER_URL -- свойство типа "Привязка к элементам инфоблока".
ответил 26 Май, 14 от Ly (4,580 баллов)
00 голосов
Странно но не работает , я и просто ID прописывал как array(10,20) , не находит =(

Использую данный код в шаблоне, ID привязки точно есть. Может какие то логи посмотреть или с параметрами выполнить код?
ответил 22 Сен, 14 от SmailRat (160 баллов)
00 голосов
Покажите свой код.
ответил 26 Янв, 15 от Ly (4,580 баллов)
00 голосов
Код собственно такой какой вы и привели.

$arItem["PROPERTIES"]["BANNER_URL"]["VALUE"] значение имеется, и соответствует ID выбранному элементу.
Прописывал print_r & vardump  на все, понятно только одно, что тут


Код
 $res = CIBlockElement::GetList(
   false,
   array(
      'ID' => $arItem["PROPERTIES"]["BANNER_URL"]["VALUE"],
   ),
   false,
   false,
   array('ID', 'DETAIL_PAGE_URL')
   );
$res возвращается пустым , при любых значения ID.

Сама задача такая, к элементу инфоблока, привязывается 1 элемент (товар, новость) и вот в шаблоне нужно вывести ссылку на этот элемент. Все вроде бы понятно , и код я написал сразу , но он не работает почему-то.

Я даже не могу предположить из-за чего.
ответил 10 Май, 15 от SmailRat (160 баллов)

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

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