Данный скрипт реализовывает, смену сортировку товаров, товары которые не имеются в наличии, задаем им менее приоритетный индекс сортировки, товар который в наличии даем ему индекс сортировки 500, данный скрипт выполнять следует по крону
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 |
<?php /** * TODO * * Данная магическая штука, реализует функционал для каталога, * функционал заключается в следующем, нам нужно выводить сперва товары в наличии, * а только потом выводить товары в самом конце которых нет в наличии. * * Для реализации этого, используем божественный код приведенный ниже. * * Реализация завязана на сортировке, если товара нет в наличии то, * кидаем ему индекс сортирви 100, если товар в наличии и у него индекс 100, * то кидаем 500 ему индекс * */ /** * Логирование запуска скрипта * @return [type] [description] */ function logSort() { $pid = getmypid(); $file = fopen('changesort.log', 'a+'); $message = "pid: [$pid] update : " . date("d.m.Y H:i:s") . PHP_EOL; fwrite($file, $message); fclose($file); } logSort(); // подключаем prolog bitrix require $_SERVER["DOCUMENT_ROOT"] . '/bitrix/modules/main/include/prolog_before.php'; // подключаем нужные модули CModule::IncludeModule("iblock"); CModule::IncludeModule("sales"); $el = new CIBlockElement; $arSelect = array("ID", "CATALOG_QUANTITY", "SORT"); /** * Меняем индекс сортировки товаром, у которых 100 ИС и кол-во больше 0 // отображаем * @return [type] [description] */ function showItem() { global $el, $arSelect; $arFilter = array("IBLOCK_ID" => 4, "SORT" => 100, ">CATALOG_QUANTITY" => 0); $res = $el->GetList(array(), $arFilter, false, false, $arSelect); while ($r = $res->GetNext()) { $el->Update($r['ID'], array("SORT" => 500)); } } /** * Меняем индекс сортировки товаром, у которых 500 ИС и кол-во 0 // скрываем * @return [type] [description] */ function hideItem() { global $el, $arSelect; $arFilter = array("IBLOCK_ID" => 4, "SORT" => 500, "<=CATALOG_QUANTITY" => 0); $res = $el->GetList(array(), $arFilter, false, false, $arSelect); while ($r = $res->GetNext()) { $el->Update($r['ID'], array("SORT" => 100)); } } showItem(); hideItem(); |