@azesmhook

Как программно задать элементам инфоблока основной раздел, не сбрасывая все остальные?

На сайте товары принадлежат нескольким категориям одновременно, и встала задача указать в качестве основного раздела корневую категорию. Пробовал через update(), указывая нужный раздел в параметре "IBLOCK_SECTION_ID", не работает, остается только выбранный раздел, остальные привязки сбрасываются. Кто-нибудь сталкивался с такой задачей? Как решали?5c4ad4ac34f53592148783.png
  • Вопрос задан
  • 221 просмотр
Решения вопроса 1
gromdron
@gromdron
Работаю с Bitrix24
Если посмотреть на методы Add и Update класса CIblockElement то обновление выполняется следующим кодом:

if(array_key_exists("IBLOCK_SECTION_ID", $arFields))
{
    if (!array_key_exists("IBLOCK_SECTION", $arFields))
    {
        $arFields["IBLOCK_SECTION"] = array($arFields["IBLOCK_SECTION_ID"]);
    }
    elseif (is_array($arFields["IBLOCK_SECTION"]) && !in_array($arFields["IBLOCK_SECTION_ID"], $arFields["IBLOCK_SECTION"]))
    {
        unset($arFields["IBLOCK_SECTION_ID"]);
    }
}


Таким образом если вы будете передавать IBLOCK_SECTION_ID и не будете передавать массив других разделов - IBLOCK_SECTION, то они будут обнулены.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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