Magento - Добавление номера страницы к заголовку в списке товаров - PullRequest
1 голос
/ 07 марта 2012

У меня есть расширение, использующее блок списка продуктов для отображения фильтра сетки продуктов по атрибуту (расширение - Страницы с информацией об атрибутах ).

В функции "_prepareLayout" этого блока расширения расширение устанавливает заголовок и описание страницы с помощью этого кода:

$head = $this->getLayout()->getBlock('head');
.
.
.
$head->setTitle($title);
head->setDescription($des);

Я хочу добавить текст к заголовку и описанию в следующем формате:

$page_info = "Page A of B for ";
$title = $page_info . title;
$items_info = "Listings X-Y (out of Z) ";
$des = items_info . $des;

Я пробовал этот код, чтобы получить текущую страницу, последнюю страницу, номер и элементы и т. Д.

$html_pager = Mage::getBlockSingleton('page/html_pager');
    $html_pager->setCollection($product_collection);
    $limit = Mage::getSingleton('core/app')->getRequest()->getParam('limit');
    if(empty($limit))
    {
        $limit = 8;
    }

    $html_pager->setLimit($limit);
    $LastPageNumber = $html_pager->getLastPageNum();
    $current_page = $html_pager->getCurrentPage();

    $page_info = "";
    if($current_page > 1)
    {
        $page_info = "Page " . $current_page . " of $LastPageNumber for ";
    }

    $FirstNum = $html_pager->getFirstNum();
    $LastNum = $html_pager->getLastNum();
    $TotalNum = $html_pager->getTotalNum();

    $items_info = "Listings " . $FirstNum . "-" . $LastNum . " (out of ". $TotalNum . ") ";

Код дает мне правильную информацию, но он вызывает проблему в сетке продуктов - он всегда показывает 10 продуктов в сетке продуктов (независимо от того, что я выбираю в «Показать на странице»).

Есть идеи, как получить информацию, не нарушая функциональность сетки?

Ответы [ 2 ]

6 голосов
/ 08 марта 2012

Я нашел решение, которое работает для меня:

    $product_collection = clone Mage::getSingleton('catalog/layer')->getProductCollection(); 
    $total = count($product_collection);

    $current_page = Mage::getBlockSingleton('page/html_pager')->getCurrentPage();

    $limit = Mage::getSingleton('core/app')->getRequest()->getParam('limit');
    if(empty($limit))
    {
        $limit = Mage::getStoreConfig('catalog/frontend/grid_per_page');
    }

    $pages = $total / $limit;
    $pages = ceil($pages);

    if($current_page > 1)
    {
        $page_info = "Page " . $current_page . " of $pages for ";
    }

    $FirstNum = $limit*($current_page-1)+1;

    if($current_page == $pages)
    {
        $LastNum = $total;
    }
    else
    {
        $LastNum = $limit + ($FirstNum - 1);
    }

    $items_info = "Listings " . $FirstNum . "-" . $LastNum . " (out of ". $total . ") ";
0 голосов
/ 16 июня 2017
$pager = Mage::getBlockSingleton('page/html_pager');
$productCollection = Mage::getSingleton('catalog/layer')->getProductCollection();
$pager->setCollection($productCollection);

После этого у вас есть все доступные методы блока (Mage_Page_Block_Html_Pager):

$pager->getCurrentPage();
$pager->getLastPageNum();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...