【问题标题】:Magento get numerical order of products in collectionMagento 获取集合中产品的数字顺序
【发布时间】:2014-10-21 13:09:53
【问题描述】:

在 product/list.phtml 中,我试图获取每个产品的数量,因为它会出现在用户的视图中。假设一个类别有 24 个产品。如果用户继续到第二页,第一个产品将是 17(并且工具栏分页器将显示 17-24 of 24 Products)。我正在尝试获取第一个数字。

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

$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,这导致数字的前进与工具栏寻呼机不同(并且不正确)。在管理面板中,我将 Grid and List default Products per Page 设置为 16,这是我所期望的,这也是工具栏寻呼机正在运行的数字。

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

【问题讨论】:

    标签: php magento templates collections


    【解决方案1】:

    这只是一个猜测,但请尝试一下:

    替换:

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

    与:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-15
      • 2014-09-19
      相关资源
      最近更新 更多