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

发布于 2024-10-21 06:56:38 字数 728 浏览 2 评论 0原文

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

我检索按实体 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());

如果我“转储”返回的对象,我会得到类似的东西:

["限制计数"] =>整数(5) [“限制偏移”] => int(0)

所以它看起来被分页器覆盖。

您知道如何正确限制结果数量吗?

对于优化和演示,我实际上不想检索所有产品集合。

谢谢

I've a recent products action in my Catalog/Product controllers.

I retrieve all the product sorted by entity id. Works great ok.

The problem is I just want to show 20 products in 4 pages.

I tried to extend Mage_Catalog_Block_Product_List and override _getProductCollection() and I did something like this:

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

And the important part:

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

If I 'dump' the returned Object I've something like this:

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

So it looks to be overriden by the paginator.

Do you know a way to limit properly the number of result?

For both optimization and presentation I actually don't want to retrieve all the products collection.

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

静待花开 2024-10-28 06:56:38

那应该有效...

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

That should work...

$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);
红衣飘飘貌似仙 2024-10-28 06:56:38

试试这个

$this->_productCollection = Mage::getModel('catalog/product')->getCollection()
-> 设置页面大小(20)
->setCurPage(1);

Try this

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

情话难免假 2024-10-28 06:56:38

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

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

Another, equally valid, way is with:

$this->_productCollection->setPageSize($this->getProductsLimit());
你列表最软的妹 2024-10-28 06:56:38

选择 20 个产品:-

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

Select 20 products:-

$this->_productCollection = Mage::getModel('catalog/product')->getCollection()
                ->addAttributeToSort('entity_id', 'desc')
                ->addStoreFilter()
                ->setPageSize(20);
谁与争疯 2024-10-28 06:56:38

获取集合后尝试以下操作:

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

Try this after obtaining the collection:

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文