如何限制Magento内的结果数量?

时间:2011-03-11 11:28:20

标签: php magento pagination

我的目录/产品控制器中有最近的产品操作。

我检索按实体ID排序的全部产品。工作得很好。

问题是我只想在4页中展示20种产品。

我尝试扩展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 个答案:

答案 0 :(得分:5)

这应该有用......

$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);

答案 1 :(得分:2)

试试这个

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

答案 2 :(得分:1)

另一种同样有效的方法是:

$this->_productCollection->setPageSize($this->getProductsLimit());

答案 3 :(得分:0)

选择20种产品: -

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

答案 4 :(得分:0)

获取集合后尝试此操作:

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