Сохранение основного раздела товара в свойство

1k
Алексей,
Сохранение основного раздела товара в свойство
Сохранение основного раздела товара в свойство

Готовый код. Свойство можно использовать, например, в умном фильтре или для добавления в индекс поиска.

Готовый код. Свойство можно использовать, например, в умном фильтре или для добавления в индекс поиска.

Код свойства MAIN_SECTION, название любое, например "Основной раздел", тип "строка".

Выполнять на кроне, либо адаптировать и использовать по событию изменения элемента инфоблока.

CModule::IncludeModule('iblock');

$arFilter = array(
	'IBLOCK_ID' => 1, // ID инфоблока каталога
	'ACTIVE' => 'Y'
);

// Получаем все разделы
$dbSections = CIBlockSection::GetList(
	array(),
	$arFilter,
	false,
	array('ID', 'NAME')
);
while ($arSection = $dbSections->Fetch()) {
	$arSections[$arSection['ID']] = $arSection['NAME'];
}

$dbItem = CIBlockElement::GetList(
	array(),
	$arFilter,
	false,
	false,
	array('ID', 'IBLOCK_ID', 'NAME', 'IBLOCK_SECTION_ID', 'PROPERTY_MAIN_SECTION')
);
while ($arItem = $dbItem->GetNext()) {
	$updateIndex = false;
	
	// Основной раздел, записываем в свойство только если раздел был изменён
	if ($arSections[$arItem['IBLOCK_SECTION_ID']] && $arSections[$arItem['IBLOCK_SECTION_ID']] != $arItem['PROPERTY_MAIN_SECTION_VALUE']) {
		CIBlockElement::SetPropertyValuesEx(
			$arItem['ID'], 
			$arItem['IBLOCK_ID'], 
			array('MAIN_SECTION' => $arSections[$arItem['IBLOCK_SECTION_ID']])
		);
		$updateIndex = true;
	}

	if ($updateIndex) { // Обновление индекса элемента
		\Bitrix\Iblock\PropertyIndex\Manager::updateElementIndex($arItem['IBLOCK_ID'], $arItem['ID']);
	}
}

Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.

Опубликовано 14 августа 2020 | Обновлено 1 марта 2021
готовый код, seo
Поделиться
Похожие статьи
Как настроить редирект со страниц с использованием заглавных букв на страницы со строчными буквами
Прилетела задача от seo отдела - сделать редирект со страниц с разным регистром /catalog/BRANDS/all/...
Читать дальше » 0
Алексей,
Скрываем ссылки на внешний сайты c помощью js
Простой jQuery скрипт для замены span[data-link] на a[href].
Читать дальше » 0
Алексей,
Комментарии
❮…❯
Авторизуйтесь чтобы получать уведомления об ответе
Готовый код. Свойство можно использовать, например, в умном фильтре или для добавления в индекс поиска.