Вывод всех товаров, которым назначены скидки
Материал из Umicms
Задача: Вывести информацию о всех товарах, которым назначены скидки (скидка на определенные товары).
Реализация:
В файл 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>