<?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();