我通过将项目添加到 Varien_Data_Collection 集合对象来创建集合。
$collection = new Varien_Data_Collection();
foreach($array_of_products as $productId){
$collection->addItem(Mage::getModel('catalog/product')->load($productId));
}
但是,当该对象传递到 Magento 分页器 block (如下所示)时,它会破坏我的自定义页面中的分页。
$pager = $this->getLayout()->createBlock('page/html_pager', 'retailerfe.analysis.pager')
->setCollection($collection);
P.S 我从来没有遇到过从以下位置获取的集合的问题 模型集合,如 Mage::getModel('module/modelname')->getCollection()。它只是通过将项目添加到 Varien_Data_Collection 对象而创建的集合。
最佳答案
寻呼机正在调用 setPageSize
在您的收藏中,如果您追踪它,则仅由 getLastPageNumber
使用。这意味着寻呼机可以准确地显示页数,但仅此而已。是Varien_Data_Collection_Db
它实际上通过将当前页码和大小呈现为 SQL 的 LIMIT
子句来对当前页码和大小执行任何操作。
要创建一个符合页面标准的集合,您必须创建该类的后代。有关想法请查看 the source of Varien_Data_Collection_Filesystem
以及它如何实现 loadData
。
我刚刚重新阅读了您的问题,并意识到您可以这样做:
$collection = Mage::getModel('catalog/product')->getCollection()
->addIdFilter($array_of_products);
这个集合会非常愉快地分页。
关于Magento 自定义集合打破分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8937714/