Pregunta

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.

¿Fue útil?

Solución

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top