Панель инструментов 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 ответ
У вас есть две проблемы, которые я могу сразу заметить
Там нет такого типа блока, как
catalog/html_pager
(ты имел ввидуpage/html_pager
)Панель инструментов блока
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): ?>
чтобы убедиться, что вы не попадаете в списки небольших категорий.