Этот код удаляет устаревшие (старше 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);
}
}
}
?> |