在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模板中加载。有人能找到我在这里犯的错误吗?
答案 0 :(得分:0)
我不确定(在我看来它并没有在第二个代码中加载你的$ _productCollection)但我猜你忘了加载收集。
$model = Mage::getResourceModel('reports/product_collection');
$collection = $model->getCollection();
$collection->AddAttributeToSelect(*);
$collection->AddOrderedQty();
$collection->SetPageSize($limit);
$collection->load();