Magento 自定义集合打破分页

标签 magento collections pagination

我通过将项目添加到 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/

相关文章:

java - 按字符串字段(包括特定于语言的字符)对对象进行排序

c# - 在类里面收藏

php - laravel 只显示分页中的下一个和上一个链接

php - 如何在 Laravel 中限制页面链接数?

mysql - 如何从 magento 数据库更改将商店代码添加到 Urls

mysql - Magento安装

attributes - Magento:将产品两次添加到购物车,具有不同的属性!

css - Magento - 根据所选国家/地区更改背景图片

java - 当用户输入数字时计算数字的出现次数并显示最高出现次数

javascript - 显示/隐藏 div 中 <ul> 列表的多个分页