Занести по свойству в нужную категорию. В битриксе
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
<?php require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); \CModule::IncludeModule('iblock'); /* * $id_novinki- id категории * $property_name имя свойства + приписки спереди и сзади , например PROPERTY_EMARKET_NEW_VALUE * */ function setCategory($id_novinki ,$property_name){ // $id_novinki=1765 ; //это id раздела новинки- как сменишь - надо сменить будет. // цикл по элементам $iterator = \CIBlockElement::GetList(array("SORT"=>"ASC"), array('IBLOCK_ID' => 6 ,$property_name=>"Да"), false, false, array('ID',"NAME")); while ($ob = $iterator->GetNextElement()) { $arFields = $ob->GetFields(); // print_r($arFields); echo $arFields['NAME'].$arFields['ID'].'<br/>'; $ELEMENT_ID=$arFields['ID']; //получаем примвязку ко всем категориям, к которым привязан товар // их несколько может быть, т.е массив $db_old_groups = CIBlockElement::GetElementGroups($ELEMENT_ID, true); $ar_new_groups = Array($NEW_GROUP_ID); while($ar_group = $db_old_groups->Fetch()){ $ar_new_groups[] = $ar_group["ID"]; } //если в найденом массиве нет категории с новинками- добавляем в массив if(!in_array ($id_novinki, $ar_new_groups)){ $ar_new_groups[]=$id_novinki; //эта штука добавляет сразу к товару много категорий CIBlockElement::SetElementSection($ELEMENT_ID, $ar_new_groups); } \Bitrix\Iblock\PropertyIndex\Manager::updateElementIndex(6, $ELEMENT_ID); // простое обновление элемента нам не нужно , только категории // они работают по другому } } // вывов функции setCategory(1765 , 'PROPERTY_EMARKET_NEW_VALUE'); // закомментированный ниже можешь под себя заточить //setCategory(1765 , 'PROPERTY_EMARKET_HIT_VALUE'); - везде значением надо в новых свойствах выставить Да http://prntscr.com/mum7qp /* * так выглядит без использования функции - код рабочий. * $id_novinki=1765 ; //это id раздела новинки- как сменишь - надо сменить будет. // цикл по элементам $iterator = \CIBlockElement::GetList(array("SORT"=>"ASC"), array('IBLOCK_ID' => 6 ,'PROPERTY_EMARKET_NEW_VALUE'=>"Да"), false, false, array('ID',"NAME")); while ($ob = $iterator->GetNextElement()) { $arFields = $ob->GetFields(); // print_r($arFields); echo $arFields['NAME'].$arFields['ID'].'<br/>'; $ELEMENT_ID=$arFields['ID']; //получаем примвязку ко всем категориям, к которым привязан товар // их несколько может быть, т.е массив $db_old_groups = CIBlockElement::GetElementGroups($ELEMENT_ID, true); $ar_new_groups = Array($NEW_GROUP_ID); while($ar_group = $db_old_groups->Fetch()){ $ar_new_groups[] = $ar_group["ID"]; } //если в найденом массиве нет категории с новинками- добавляем в массив if(!in_array ($id_novinki, $ar_new_groups)){ $ar_new_groups[]=$id_novinki; //эта штука добавляет сразу к товару много категорий CIBlockElement::SetElementSection($ELEMENT_ID, $ar_new_groups); } \Bitrix\Iblock\PropertyIndex\Manager::updateElementIndex(6, $ELEMENT_ID); // простое обновление элемента нам не нужно } */ |