Magento收集产品的数字顺序

时间:2014-08-27 19:49:28

标签: php magento templates collections

在product / list.phtml中,我试图获取每个产品的数量,就像在用户视图中看到的那样。假设一个类别有24个产品。如果用户进入第二页,则第一个产品将是17(并且工具栏寻呼机将显示24个产品中的17-24个)。我想要获得第一个号码。

我的问题是我无法获得准确的数字列表。工具栏寻呼机计算并显示当前正在查看的正确产品编号,我想我会尝试调用该块并从中获取信息。我想它会像调用一样简单:

$pager = Mage::getBlockSingleton('page/html_pager')->getFirstNum();

返回错误Fatal error: Call to a member function getPageSize() on a non-object in /app/code/core/Mage/Page/Block/Html/Pager.php on line 192

指向此函数,return语句为第192行:

public function getFirstNum()
{
    $collection = $this->getCollection();
    return $collection->getPageSize()*($collection->getCurPage()-1)+1;
}

进一步挖掘看来,寻呼机块在进行任何操作之前需要设置一个集合。所以我设置了集合并希望它有效:

$_productCollection=$this->getLoadedProductCollection();
$pager = Mage::getBlockSingleton('page/html_pager')->setCollection($_productCollection)->getFirstNum();

现在我正在获取输出,但pageSize设置为10,这导致数字的推进与工具栏寻呼机不同(且不正确)。在管理面板中,我将网格和列表默认的每页产品数设置为16,这正是我所期望的,也就是工具栏寻呼机正在运行的数字。

我需要做些什么才能获得正确而准确的数字列表?

1 个答案:

答案 0 :(得分:0)

这只是猜测,但试一试:

替换:

$pager = Mage::getBlockSingleton('page/html_pager')->setCollection($_productCollection)->getFirstNum();

使用:

$pager = Mage::getBlockSingleton('page/html_pager')->setCollection($_productCollection)->setPageSize(16)->getFirstNum();

如果curPage设置不正确,您可以在setPageSize(16)之后尝试 - > gt。setCurPage($ your_page_variable)。