Примеры из интернета реализации получения списка товаров на которые установлена скидка в большинстве случаев не работают.
Внятной документации по методам api ядра D7 не нашел.
В итоге расковырял модуль вывода скидок из админки и слепил функцию.
Оставлю это чтобы потом не искать и не придумывать велосипед заново.
Внятной документации по методам api ядра D7 не нашел.
В итоге расковырял модуль вывода скидок из админки и слепил функцию.
Оставлю это чтобы потом не искать и не придумывать велосипед заново.
function GET_SALE_FILTER(){
//Получаем разделы на которые применены скидки
$listDiscountIds = array(
'PRODUCTS'=>array(),
'SECTIONS'=>array()
);
//Получаем информацию о скидках (исключая из выдачи купоны)
$discountIterator = Internals\DiscountTable::getList(array(
'select' => array('*'),
'filter'=> array('ACTIVE'=>'Y','USE_COUPONS'=>'N'),
));
while ($discount = $discountIterator->fetch()){
$conditions_list = $discount['CONDITIONS_LIST'];
$children = $conditions_list['CHILDREN'];
foreach ($children as $child){
$children_inn = $child['CHILDREN'];
foreach ($children_inn as $item){
switch ($item['CLASS_ID']){
case 'CondIBSection': //Выбираем скидки на секции
{
if(is_array($item['DATA']['value'])) {
$listDiscountIds['SECTIONS'] = array_merge(
$listDiscountIds['SECTIONS'],
$item['DATA']['value']
);
}else {
$listDiscountIds['SECTIONS'][] = $item['DATA']['value'];
}
break;
}
case 'CondIBElement' : //Выьираем скидки на товары
{
if(is_array($item['DATA']['value'])) {
$listDiscountIds['PRODUCTS'] = array_merge(
$listDiscountIds['PRODUCTS'],
$item['DATA']['value']
);
}else {
$listDiscountIds['PRODUCTS'][] = $item['DATA']['value'];
}
break;
}
}
}
}
}
//Получаем список товаров из групп на которые висят скидки
if(count($listDiscountIds['SECTIONS'])>0){
$arFilter = Array('IBLOCK_SECTION_ID'=>$listDiscountIds['SECTIONS'],"ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter);
while($ob = $res->GetNextElement())
{
$arFields = $ob->GetFields();
$listDiscountIds['PRODUCTS'][]=$arFields['ID'];
}
}
//Чистим дубли если они есть
$discountProducts = $listDiscountIds['PRODUCTS'];
$discountProducts = array_unique($discountProducts);
unset($listDiscountIds);
return $discountProducts;
}
Комментариев нет:
Отправить комментарий