Обновление привязки элементов к разделам в 1С-Битрикс

Внимание! Работает режим премодерации. Все сообщения публикуются после проверки!
Страницы: 1
Ответить
RSS
Обновление привязки элементов к разделам в 1С-Битрикс
Обновление привязки элементов к разделам в 1С-Битрикс

В работе с CMS 1С-Битрикс часто возникает необходимость управления  привязками элементов к разделам. Например, бывает нужно удалить  элементы, которые старше определенного срока, из определенного раздела,  или наоборот — добавить элементы в нужные разделы. В этой статье мы  разберем, как получить список разделов, к которым привязан элемент, и  обновить эту привязку.
Этот код удаляет устаревшие (старше 3 месяцев) элементы из раздела "Новинки", сохраняя их привязку к другим разделам, если таковые есть.
Код
<?php
// Удаляем привязку к разделу "Новинки" у элементов, созданных более 3 месяцев назад
$section_new = 123; // ID раздела "Новинки"
$objDateTime = new \Bitrix\Main\Type\DateTime();
$objDateTime->add('-3 month');

$arFilter = [
    "IBLOCK_ID" => CATALOG_IBLOCK_ID,
    "ACTIVE" => "Y",
    "<=DATE_CREATE" => $objDateTime->format("Y-m-d"),
    "SECTION_ID" => $section_new
];

$arSelect = ["ID"];
$res = CIBlockElement::GetList([], $arFilter, false, false, $arSelect);

$elementIds = [];
while ($element = $res->Fetch()) {
    $elementIds[] = $element["ID"];
}

if (!empty($elementIds)) {
    $result = CIBlockElement::GetElementGroups($elementIds, true, ["ID"]);
    $elementSections = [];
    while ($group = $result->Fetch()) {
        $elementSections[$group["IBLOCK_ELEMENT_ID"]][] = $group["ID"];
    }

    $el = new CIBlockElement();
    foreach ($elementIds as $elId) {
        if (isset($elementSections[$elId]) && ($key = array_search($section_new, $elementSections[$elId])) !== false) {
            unset($elementSections[$elId][$key]);
            $el->Update($elId, ["IBLOCK_SECTION" => $elementSections[$elId]], false, false, true);
        }
    }
}
?>
Страницы: 1
Ответить
Форма ответов
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
 

Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Разработка интернет-магазина с готовой версткой

от 4 недель

от 90 000 рублей

* указана минимальная стоимость. Стоимость выбранной лицензии «1С-Битрикс» оплачивается отдельно.

Лендинг

от 3 дней

от 25 000 рублей

Разработка одностраничного сайта на платформе Битрикс

* стоимость зависит от наличия верстки, использования готового решения и т.д.

Перенос сайтов на «1С-Битрикс»

сайты на платформе «1С-Битрикс» — это удобство, надежность и высокая посещаемость

от 12 000 рублей
Перенос сайтов с любых CMS и статичных страниц на платформу «1С-Битрикс», с учетом дизайна, верстки и урл-адресов. С сохранением всей информации и структуры сайта.

* зависит от объема выполняемых работ.