Как сделать сортировку при отключенном количественном учете описано здесь.
1. Добавить числовое свойство IS_AVAILABLE в инфоблок товаров.
2. Добавить в init.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
AddEventHandler("catalog", "OnBeforeProductUpdate", array("MyCatalogEventHandler", "OnBeforeProductUpdate")); AddEventHandler("catalog", "OnBeforeProductAdd", array("MyCatalogEventHandler", "OnBeforeProductAdd")); class MyCatalogEventHandler { public static function OnBeforeProductUpdate($id, &$arFields) { $isAvailable = $arFields["QUANTITY"] > 0 ? 1 : 0; CIBlockElement::SetPropertyValuesEx($id, false, array("IS_AVAILABLE" => $isAvailable)); } public static function OnBeforeProductAdd(&$arFields) { $isAvailable = $arFields["QUANTITY"] > 0 ? 1 : 0; CIBlockElement::SetPropertyValuesEx($arFields["ID"], false, array("IS_AVAILABLE" => $isAvailable)); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");?> <? set_time_limit(0); CModule::IncludeModule("iblock"); $arSelect = Array("ID", "NAME", "DATE_ACTIVE_FROM", "CATALOG_QUANTITY"); $arFilter = Array("IBLOCK_ID"=>4); $res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>10000000), $arSelect); while ($ob = $res->GetNext()) { $IS_AVAILABLE = $ob["CATALOG_QUANTITY"] > 0? 1: 0; $ELEMENT_ID = $ob["ID"]; CIBlockElement::SetPropertyValuesEx($ELEMENT_ID, false, array("IS_AVAILABLE" => $IS_AVAILABLE)); } ?> <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?> |
Но по-хорошему еще нужно добавить индекс по добавленному свойству PROPERTY