Magento Pagination bar限制项目数量

时间:2011-09-08 15:27:28

标签: magento

在magento中,我需要从带有分页栏的产品系列中加载 前20项(分页栏应该只有4页,因为它只有20个项目 - 但是在我的情况下,它有完整的产品集合,因为magento分页栏正在采用整个集合对象来创建没有限制属性的工具栏。)

我有以下代码

    $_productCollection = Mage::getResourceModel('reports/product_collection')
          ->addAttributeToSelect('*')
          ->addOrderedQty()
          ->setPageSize($limit)
          ->setPage($p, $limit)     
          ->setOrder('ordered_qty', 'desc');

这正确地返回了20个项目。当我通过以下方法将其设置为分页栏时。

$magento_block = Mage::getSingleton('core/layout');
    $productsHtml  = $magento_block->createBlock('catalog/product_list');
    $productsHtml  ->setTemplate('catalog/product/list.phtml')->setCollection($_productCollection);
    $pager         = $magento_block->createBlock('page/html_pager', 'catalog/product_list')->setCollection($_productCollection);
    $productsHtml->setChild('pager', $pager);

它采用了所有产品系列,而不仅仅是20个用于创建工具栏的项目。所以我在productcollection本身添加了where条件,如下所示。

$_productCollection->getSelect()->where("order_items.qty_ordered  >= 50");

此系列会返回销售量超过50件的商品。但我想要的是正确的分页栏正好20项。

我如何在分页栏中设置setLimit。

以下也不适用于我

$magento_block->createBlock('page/html_pager', 'catalog/product_list')->setCollection($_productCollection)->setLimit(20);

注意: 我在Magento Enterprise 1.9版本之外加载此产品系列,而不是在magento模板中加载。有人能找到我在这里犯的错误吗?

1 个答案:

答案 0 :(得分:0)

我不确定(在我看来它并没有在第二个代码中加载你的$ _productCollection)但我猜你忘了加载收集。

$model = Mage::getResourceModel('reports/product_collection');
$collection = $model->getCollection();
$collection->AddAttributeToSelect(*);
$collection->AddOrderedQty();
$collection->SetPageSize($limit);
$collection->load();