문제

I'm new to Magento and I'm having a hard time trying to figure out how to display the pager inside the toolbar when it is called from the catalog/category/view.phtml file. Here's the code I'm using :

$layout = Mage::getSingleton('core/layout');
$toolbar = $layout->createBlock('catalog/product_list_toolbar');
$pager = $layout->createBlock('catalog/html_pager');
$block = $layout->createBlock('catalog/product_list');
$block->setCategoryId($_category->getId());
$block->setChild('toolbar', $toolbar);  
$collection = $block->getLoadedProductCollection();
$toolbar->setCollection($collection);
echo $toolbar->renderView(); 

The Sort By, Show items per page and items total show approprietly, but the pager is just not rendering.. Anyone know what I'm doing wrong? Any help would be greatly appreciated.

도움이 되었습니까?

해결책

You've got two problems I can immediately spot

  1. There's no such block type as catalog/html_pager (did you mean page/html_pager)

  2. The toolbar block's getPagerHtml method looks for a child block named product_list_toolbar_pager. You've not inserted, appended, or set this child.

Instantiate pager block with something like this

$pager = $layout->createBlock('page/html_pager');

and insert it into the toolbar with

$toolbar->setChild('product_list_toolbar_pager', $pager);

and you may have better results.

Also, the pager template itself (frontend/base/default/template/page/html/pager.phtml) contains code that will surpress the page if there's only one page of results . Drop in some debugging around this if clause.

<!-- File: app/design/frontend/base/default/template/page/html/pager.phtml -->
<?php if($this->getLastPageNum()>1): ?>

to make sure you're not falling afoul of small category listings.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top