У меня есть недавние действия с продуктами в моих контроллерах Catalog / Product.
Я извлекаю весь продукт, отсортированный по идентификатору объекта. Отлично работает.
Проблема в том, что я просто хочу показать 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)
Таким образом, он выглядит чрезмерно сложным.
Знаете ли вы способ ограничить количество результатов?
Для оптимизации и представления я фактически не хочу получать всю коллекцию продуктов.
спасибо
Это должно работать …
$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);
Попробуй это
$this->_productCollection = Mage::getModel('catalog/product')->getCollection() ->setPageSize(20) ->setCurPage(1);
Другой, в равной степени действительный способ:
$this->_productCollection->setPageSize($this->getProductsLimit());
Выберите 20 продуктов: –
$this->_productCollection = Mage::getModel('catalog/product')->getCollection() ->addAttributeToSort('entity_id', 'desc') ->addStoreFilter() ->setPageSize(20);
Попробуйте это после получения коллекции:
$this->_productCollection->getSelect()->limit( 20 );