Иногда требуется деактивировать товар массово если его нет в наличии, сеошники конечно скажут что страницы выпадут из индекса и это огорчит яндекса, но если к примеру не требуется частое обновление каталога то поможет такой код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
CModule::IncludeModule('iblock'); $c = ; $obE = new CIBlockElement(); $arFilterWin = Array("IBLOCK_ID"=>17, "QUANTITY" => , "ACTIVE" => "Y"); $resWin = CIBlockElement::GetList(Array("sort"=>"asc"), $arFilterWin, false, false, false); while($obWin = $resWin->Fetch()) { $arFields_update = Array( "ACTIVE" => "N", "IBLOCK_ID" => 17, ); if ($obE->Update($obWin["ID"], $arFields_update)){ $c++; } } echo '<br><br><br><p><b>Успешно деактивировано товаров:</b> '.$c; echo '</p><br><br><br><br>'; |
Где 17 — это ID инфоблока каталога.
В данном случае обновляется поле у товаров, активность у которых Y и количество 0, но можно изменить конструкцию, к примеру деактивировать все товары без цен, дабы не менять логику и не использовать фильтрацию в самом компоненте каталога, можно добавить в переменную $arFilterWin ваш тип цены используя ее код и сделать условие мол BAZE => 0, так деактивируются все товары без цен.
Best regards Ковальски