@saharok13
начинающий программист

Как вывести пользовательское свойство «привязка к элементам»?

Добрый день всем!
Я хочу чтобы для каждого раздела на детальной странице товара выводились сопутствующие товары.
Например, раздел обувь, на дет.стр. любого товара должны быть сопутствующие товары (носки, шнурки).
А в разделе штаны должны быть (ремень и еще что-то).

Нашла в интернете что-то типо такого, но он не выводит товары.
<?
$db_list = CIBlockElement::GetList(Array(), $arFilter = Array("IBLOCK_ID"=>8, "ID"=>$arResult["ID"]), true, Array("UF_RECOMMEND")); 
$props_array = $db_list->GetNext();

if (!empty($props_array["UF_RECOMMEND"])) {
    $rsSections = CIBlockElement::GetList(
        array("SORT" => "ASC"),
        array("IBLOCK_ID" => $IBLOCK_ID, "ACTIVE" => "Y", "ID" => $props_array["UF_RECOMMEND"]),
        false,
        array("NAME", "DETAIL_PICTURE", "PICTURE", "SECTION_PAGE_URL"),
        false
    );
    ?>
    <section class="recomend">
        <h2 class="recomend-title">Сопутствующие товары:</h2>
        <div class="recomend-wrap">
            <?
            while ($arSections = $rsSections->GetNext()) {
                ?>
                <div class="recomend-item" oncl ick="location.href='<?= $arSections['SECTION_PAGE_URL'] ?>';">
                    <div class="recomend-img">
                        <img src="<?= CFile::GetPath($arSections['PICTURE'])?>" class="recomend-img-art" alt="<?= $arSections['NAME'] ?>" title="<?= $arSections['NAME'] ?>">
                    </div>
                    <div class="recomend-name">
                        <h3><?= $arSections['NAME'] ?></h3>
                    </div>
                </div>
                <?
            }
            ?>
        </div>
    </section>
    <?
}
?>

Компонент "рекомендуемые товары" выводит для всех разделов набор моих сопутствующих товаров. А мне нужно для каждого раздела свои сопутствующие товары.
Мне бы еще кнопку купить и цену вывести, вообще было бы отлично.
Подскажите, что здесь не так?
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
@ivashjke
Vue JS, React, React Native
$db_list = CIBlockElement::GetList(Array(), $arFilter = Array("IBLOCK_ID"=>8, "ID"=>$arResult["ID"]), true, Array("UF_RECOMMEND"));

в запросе true - это $arGroupBy - тут должен быть массив по каким свойствам группировать
а Array("UF_RECOMMEND") - это arNavStartParams
arSelect у вас вообще нет
$props_array = $db_list->GetNext(); - тут props_array - это обьект поэтому if (!empty($props_array["UF_RECOMMEND"])) { тут фаталка будет

для начала нужно сделать так
$props_array = CIBlockElement::GetList(Array(), $arFilter = Array("IBLOCK_ID"=>8, "ID"=>$arResult["ID"]), false, false Array('ID', 'IBLOCK_ID',"UF_RECOMMEND"))->Fetch();


и тут
$rsSections = CIBlockElement::GetList(array("SORT" => "ASC"),
        array("IBLOCK_ID" => $IBLOCK_ID, "ACTIVE" => "Y", "ID" => $props_array["UF_RECOMMEND"]),
        false,
        array("NAME", "DETAIL_PICTURE", "PICTURE", "SECTION_PAGE_URL"),
        false

таже ошибка - array("NAME", "DETAIL_PICTURE", "PICTURE", "SECTION_PAGE_URL"), и последний false местами поменять
и вот это while ($arSections = $rsSections->GetNext()) {
заменить на $arSections = $rsSections->Fetch()
тк при GetNext() в $arSections будет обьект и поля вам нужно будет выбрать через $fields = $arSections->GetFields()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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