2014-08-27 3 views
0

В product/list.phtml Я пытаюсь получить номер каждого продукта, как он будет отображаться в представлении пользователю. Допустим, у категории 24 продукта. Если пользователь перейдет к второй странице, первым продуктом будет 17 (а пейджер на панели инструментов отобразит 17-24 из 24 продуктов). Я пытаюсь получить этот первый номер.Magento получить числовой порядок продуктов в коллекции

Моя проблема заключается в том, что я не могу получить точный численный листинг. Пейджер панели инструментов вычисляет и отображает правильные номера продуктов, которые просматриваются в данный момент, я думал, что просто попробую вызвать блок и получить информацию от него. Я полагал, что это будет так же просто, как вызов:

$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.

Это указывает на эту функцию, оператор возврата является строка 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

Это только предположение, но дать ему попробовать:

Заменить:

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

с:

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

Если curPage не установлен правильно, вы можете попробовать -> setCurPage ($ your_page_variable) после setPageSize (16).

+0

Это не сработало, но я ценю усилие! – callmetwan

Смежные вопросы