Панель инструментов Magento не отображает пейджер

Я новичок в 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(); 

Сортировка по, Показывать элементы на странице и общее количество элементов отображаются правильно, но пейджер просто не рендерится. Кто-нибудь знает, что я делаю неправильно? Любая помощь будет принята с благодарностью.

1 ответ

Решение

У вас есть две проблемы, которые я могу сразу заметить

  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) содержит код, который будет перекрывать страницу, если есть только одна страница результатов. Пропустите некоторую отладку вокруг этого условия if.

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

чтобы убедиться, что вы не попадаете в списки небольших категорий.

Другие вопросы по тегам