Думаю, я понял это. Алан Шторм ранее помог мне с подобной проблемой, с которой у меня была сортировка продуктов произвольным образом.
Magento получает коллекцию товаров в произвольном порядке
Используя ту же идею, я придумал следующий код для этой работы:
$products = Mage::getModel('catalog/category')->load($category_id)
->getProductCollection()
->addAttributeToSelect('name')
->addAttributeToSelect('price')
->addAttributeToSelect('small_image')
->addAttributeToFilter('status', 1)
->addAttributeToFilter('visibility', 4)
->addAttributeToFilter('special_price', array('neq' => ""))
->addAttributeToFilter('discontinued', array('neq' => 1))
->setPageSize($results_per_page)
->setCurPage($current_page)
;
$ products-> getSelect () -> order ('(e
.special_price / e
. price
)', 'DESC');
На этот раз следует отдать должное Алану Шторму.