Как ограничить количество результатов в Magento? - PullRequest
1 голос
/ 11 марта 2011

Я недавно выполнил действие продуктов в моем каталоге / контроллерах продуктов.

Я получаю все продукт, отсортированный по идентификатору объекта.Отлично работает.

Проблема в том, что я просто хочу показать 20 товаров на 4 страницах.

Я попытался расширить Mage_Catalog_Block_Product_List и переопределить _getProductCollection(), и я сделал что-то вроде этого:

$this->_productCollection = Mage::getModel('catalog/product')->getCollection()
                ->addAttributeToSort('entity_id', 'desc')
                ->addStoreFilter();

И важная часть:

$this->_productCollection->getSelect()->limit($this->getProductsLimit());

Если я 'дам' 'возвращенный Объект, у меня будет что-то вроде этого:

["limitcount"] =>int (5) ["limitoffset"] => int (0)

Так что, похоже, он переопределяется пагинатором.

Знаете ли вы, как правильно ограничить количество результатов?

Как для оптимизации, так и для презентации, я на самом деле не хочу получать всю коллекцию продуктов.

Спасибо

Ответы [ 5 ]

5 голосов
/ 11 марта 2011

Это должно работать ...

$this->_productCollection = Mage::getModel('catalog/product')->getCollection()
                ->addAttributeToSort('entity_id', 'desc')
                ->addStoreFilter()
                ->setPage($pageNum, $pageSize);

// only retrieve 10 products
$this->_productCollection = Mage::getModel('catalog/product')->getCollection()
                ->addAttributeToSort('entity_id', 'desc')
                ->addStoreFilter()
                ->setPage(0, 10);
2 голосов
/ 19 марта 2014

Попробуйте это

$this->_productCollection = Mage::getModel('catalog/product')->getCollection() ->setPageSize(20) ->setCurPage(1);

1 голос
/ 11 марта 2011

Другой, в равной степени действительный, способ:

$this->_productCollection->setPageSize($this->getProductsLimit());
0 голосов
/ 19 февраля 2014

Попробуйте после получения коллекции:

$this->_productCollection->getSelect()->limit( 20 );

0 голосов
/ 17 марта 2011

Выберите 20 продуктов: -

$this->_productCollection = Mage::getModel('catalog/product')->getCollection()
                ->addAttributeToSort('entity_id', 'desc')
                ->addStoreFilter()
                ->setPageSize(20);
...