我的目录/产品控制器中有最近的产品操作。
我检索按实体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)
因此它看起来被分页器覆盖。
您是否知道如何正确限制结果数量?
对于优化和演示,我实际上不想检索所有产品集合。
谢谢
答案 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 );