在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,这正是我所期望的,也就是工具栏寻呼机正在运行的数字。
我需要做些什么才能获得正确而准确的数字列表?
答案 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)。