Возникла необходимость выключить на сайте интернет-магазина все товары которых больше нет или временно закончились, чтобы не замусоривали каталог. Путем гугления был найден примерно похожий код и в справке битрикса
Из кусков того и этого составили вот этот скрипт, он даже работает как надо, а именно выводит список ID и названий товара которых нет на складе, и потом деактивирует элементы каталога товаров.
Я прекрасно понимаю что это говнокод и поэтому прошу знающих людей оценить, возможно в этом коде где-то есть скрытый баг, возможно все можно сделать гораздо проще? его пока тестили на копии сайта на движке Битрикс-малый бизнес.
Из кусков того и этого составили вот этот скрипт, он даже работает как надо, а именно выводит список ID и названий товара которых нет на складе, и потом деактивирует элементы каталога товаров.
Я прекрасно понимаю что это говнокод и поэтому прошу знающих людей оценить, возможно в этом коде где-то есть скрытый баг, возможно все можно сделать гораздо проще? его пока тестили на копии сайта на движке Битрикс-малый бизнес.
| Код |
|---|
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Деактивация товаров");
?>
<?
if(!CModule::IncludeModule("catalog"))
{
ShowError(GetMessage("IBLOCK_MODULE_NOT_INSTALLED"));
return;
}
$ind = 0;
$db_res = CCatalogProduct::GetList(
array("SORT"=>"ASC"),
array("QUANTITY" => 0),
false,
false,
false
);
while ($ar_res = $db_res->Fetch())
{
$res = CIBlockElement::GetByID($ar_res['ID']);
if($ar_res = $res->GetNext())
if($ar_res['ACTIVE']=="Y"){
print $ar_res['ACTIVE'];
echo " ";
print $ar_res['ID'];
echo " ";
print $ar_res['NAME'];
echo "</br>";
$el = new CIBlockElement;
$arLoadProductArray = Array( "ACTIVE" => "N",);
$res = $el->Update($ar_res['ID'], $arLoadProductArray);
}
$ind++;
}
?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
|

