【问题标题】:How to limit the number of result within Magento?如何限制 Magento 中的结果数量?
【发布时间】:2011-03-11 11:28:20
【问题描述】:

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

我检索所有按实体 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)

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

你知道正确限制结果数量的方法吗?

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

谢谢

【问题讨论】:

    标签: php magento pagination


    【解决方案1】:

    应该可以的...

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

    【讨论】:

    • 我的问题是我需要分页,但产品范围有限。 4 页 5 个产品中的 20 个产品。使用您的解决方案,我会将我的产品限制为 10 个产品的一页,但无法使用分页。我实际上需要限制集合,而不是结果。
    • 嗯不确定您是否有任何问题,但->setPage($page /*0-3*/, 5 /* 5 products per page*/); 应该没有问题
    【解决方案2】:

    试试这个

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

    【讨论】:

    • 答案是正确的。这将限制 0,20。如果您设置当前页面 2,它将是 21,40。
    • 谢谢,请投票给我的答案,以便其他人受益。
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      选择20个产品:-

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

      【讨论】:

        【解决方案5】:

        获取收藏后试试这个:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-11-20
          • 1970-01-01
          • 1970-01-01
          • 2010-12-07
          • 2014-03-02
          • 1970-01-01
          • 1970-01-01
          • 2011-05-12
          相关资源
          最近更新 更多