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

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

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

общая схема примерно такова:

Цитата
модуль1
  - группа1
    - элемент1 (связан с элементом4 и 3, модуля2)
    - элемент2 (связан с элементом1, модуля2)
    - элемент3 (связан с элементом1 и 4, модуля2)
  - группа2
    - элемент1
    -элемент2

модуль2
  - элемент1
  - элемент2
  - элемент3
  - элемент4
  - элемент5
  - элемент6

т.е. на выводе нужно чтобы вывелся список из трех элементов, модуля2

Цитата
 - элемент1
 - элемент3
 - элемент4
Сейчас же выводится список из всех 6 элементов по такому коду:


Код
<?foreach($arResult["ITEMS"] as $arElement):?>
<?
    $this->AddEditAction($arElement['ID'], $arElement['EDIT_LINK'], CIBlock::GetArrayByID($arParams["IBLOCK_ID"], "ELEMENT_EDIT"));
    $this->AddDeleteAction($arElement['ID'], $arElement['DELETE_LINK'], CIBlock::GetArrayByID($arParams["IBLOCK_ID"], "ELEMENT_DELETE"), array("CONFIRM" => GetMessage('CT_BCS_ELEMENT_DELETE_CONFIRM')));
?>
    <li>
        <span><?=$arElement["NAME"]?></span>
        <div><?=$arElement["DETAIL_TEXT"]?></div>
    </li>
<?endforeach;?>
нужно чтобы он выводил этот список, учитывая отметки в элементах модуля1.

как их связать?
спросил 24 Фев, 13 от KYKPOH (220 баллов)

2 Ответы

00 голосов
в result_modifier.php проверять
ответил 24 Фев, 13 от XpoHo3aBp (860 баллов)
00 голосов
мне бы кусок кода - образца.
вот например пробую так:
Код
<?if(count($arResult["ITEMS"])>0):?>
<?foreach($arResult["ITEMS"] as $arElement):?>
<?
    CModule::IncludeModule('iblock');
    $rs = CIBlockElement::GetList(
        array(),
        array(
            'ID' => $arElement["ID"], 
            'NAME' => $arElement["NAME"], 
            'DETAIL_TEXT' => $arElement["DETAIL_TEXT"]
            ),
        false, 
        array('nTopCount' => 500),
        array('ID', 'NAME', 'DETAIL_TEXT'));
    $user_filed = $rs->Fetch();
?>

<?
    $res = CIBlockElement::GetByID($user_filed["ID"]);
    if($ar_res = $res->GetNext()) {
        $res = CIBlockSection::GetByID($ar_res['ID']);
        if($ar_res = $res->GetNext())
        print "<span>".$ar_res["ID"]."</span>, ";
        print "<span>".$ar_res["NAME"]."</span>, ";
        print "<em>".$user_filed["DETAIL_TEXT"]."</em>";
    }
?>
<?endforeach;?>
<?endif?>

но выводятся все равно элементы элементы не того инфоблока.
как из этого инфоблока выбрать другой конкретный инфоблок (по названию например) и вывести его элементы (или сразу связанные элементы), чтобы потом их отфильтровать, убирая дубликаты.
ответил 11 Март, 13 от KYKPOH (220 баллов)

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

0 голосов
3 ответов
0 голосов
7 ответов
0 голосов
2 ответов
0 голосов
2 ответов
спросил 14 Апр, 14 от Jagami (100 баллов)
0 голосов
3 ответов
спросил 06 Март, 14 от Texnik (1,860 баллов)