2

私は Magento を初めて使用し、catalog/category/view.phtml ファイルから呼び出されたときにツールバー内にページャーを表示する方法を理解するのに苦労しています。私が使用しているコードは次のとおりです。

$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(); 

並べ替え、ページごとのアイテムの表示、アイテムの合計は適切に表示されますが、ページャーはレンダリングされません..誰かが私が間違っていることを知っていますか? どんな助けでも大歓迎です。

4

1 に答える 1

2

すぐに見つけられる問題が 2 つあります

  1. catalog/html_pager(もしかしてpage/html_pager)のようなブロック タイプはありません

  2. ツールバー ブロックのgetPagerHtmlメソッドは、 という名前の子ブロックを探しますproduct_list_toolbar_pager。この子を挿入、追加、または設定していません。

このようなものでページャーブロックをインスタンス化します

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

それをツールバーに挿入します

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

より良い結果が得られる可能性があります。

また、ページャー テンプレート自体 ( frontend/base/default/template/page/html/pager.phtml) には、結果が 1 ページしかない場合にページを削除するコードが含まれています。このif句の周りにいくつかのデバッグをドロップします。

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

小さなカテゴリのリストに違反していないことを確認してください。

于 2013-04-10T21:42:23.147 に答える