Хорошо, это, вероятно, не идеальное решение, но это один из способов получить то, что вам нужно.
Вот так я получил коллекцию продуктов, которые были в продаже, где конечная цена продукта ниже его цены.
Сначала я сделал новый пустой сбор данных. Затем определил коллекцию, которую я собирался пройти через фильтрацию, что я мог сначала. После этого я просмотрел эту коллекцию, и все продукты, соответствующие моим требованиям, были добавлены в пустую коллекцию.
$this->_itemCollection = new Varien_Data_Collection();
$collection = Mage::getResourceModel('catalog/product_collection');
$collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());
$category = Mage::getModel('catalog/category')->load($this->getCategoryId());
$collection = $this->_addProductAttributesAndPrices($collection)
->addStoreFilter()
->addCategoryFilter($category)
->addAttributeToSort('position', 'asc');
$i=0;
foreach($collection as $product){
if($product->getFinalPrice() > $product->getPrice() && !$this->_itemCollection->getItemById($product->getId())){
$this->_itemCollection->addItem($product);
$i++;
}
if($i==$this->getProductsCount()){
break;
}
}
$this->setProductCollection($this->_itemCollection);