Вывод всех товаров, которым назначены скидки

Материал из Umicms
Версия от 20:25, 30 июня 2013; Stexe (обсуждение | вклад) (Новая страница: « category:Вопросы и уроки разработки сайтов на UMI.CMS '''Задача:''' Вывести информацию о всех тов…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск


Задача: Вывести информацию о всех товарах, которым назначены скидки (скидка на определенные товары).

Реализация:
В файл classes\modules\custom.php добавим определение макроса, который будет возвращать информацию о товарах, которым назначены скидки:

           public function getAllDiscountItems(){
                    $block_arr = array();
                    $item_arr = array();
                    
                    $obj_coll = umiObjectsCollection::getInstance();
                    $disounts = new selector('objects');
                    $disounts->types('object-type')->guid('emarket-discount');
                    $disounts->where('is_active')->equals(1);
                    
                    foreach ($disounts as $discount){
                        $prop_id = $discount->getValue('discount_rules_id');
                        $prop = $obj_coll->getObject($prop_id[0]);
                        if ($prop->getTypeGUID()=='emarket-discountrule-777'){
                            $items = $prop->getValue('catalog_items');
                            foreach ($items as $item){
                                $item_arr['attribute:id'] = $item->id;
                                $item_arr['node:item'] = $item->getName();
                                $block_arr['items']['nodes:item'][] = $item_arr;
                            }
                                
                        }
                               
                    }
                    return $block_arr;
                    
                }

Вызов макроса будет выглядеть так:

     <xsl:apply-templates select="document('udata://custom/getAllDiscountItems')"/>

В результате работы макроса получим данные в формате xml следующего вида:

<items>
    <item id="25">Akai AP-A206C</item>
    <item id="8">Sony PS-6750</item>
    <item id="102">some</item>
</items>