Где установить параметры getShowAmounts в файле pager.phtml?


В template/page/html/pager.phtml есть следующая строка, которая определяет, показывать ли количество товаров на панели инструментов списка продуктов:

<?php if($this->getShowAmounts()): ?>

Где находится getShowAmounts() в бэкэнде?

 2
Author: Chris, 2014-06-29

2 answers

В конструкции Mage_Page_Block_Html_Pager Для showAmounts установлено значение true с использованием $this->setData('show_amounts', true);.

Однако, поскольку на странице категории pager.phtml обычно вызывается с помощью getPagerHtml() из панели инструментов.phtml и панель инструментов.phtml по умолчанию имеет свой собственный html-код, на самом деле не имеет смысла отображать его дважды, поэтому в методе getPagerHtml Mage_Catalog_Block_Product_List_Toolbar showAmounts здесь установлено значение false

$pagerBlock->
...
 ->setShowAmounts(false)
...

Тем не менее, если вам действительно нужно вернуть значение true, вы можете наблюдать core_block_abstract_to_html_before и сделать что-то вроде ниже.

    <?php class Namespace_Name_Model_Observer
{
    public function coreBlockAbstractToHtmlBefore(Varien_Event_Observer $observer){
        $block = $observer->getEvent()->getBlock();
        $blockNameInLayout = $block->getNameInLayout();

        switch ($blockNameInLayout) {
            case 'product_list_toolbar_pager' :

                $block->setShowAmounts(true);
                break;
        }

    }
}
 2
Author: James Anelay - TheExtensionLab, 2014-11-15 19:36:53

/app/code/core/Mage/Catalog/Block/Product/List/Toolbar.php

Интересная часть:

public function getPagerHtml()
    {
        $pagerBlock = $this->getChild('product_list_toolbar_pager');

        if ($pagerBlock instanceof Varien_Object) {

            /* @var $pagerBlock Mage_Page_Block_Html_Pager */
            $pagerBlock->setAvailableLimit($this->getAvailableLimit());

            $pagerBlock->setUseContainer(false)
                ->setShowPerPage(false)
                ->setShowAmounts(false)
                ->setLimitVarName($this->getLimitVarName())
                ->setPageVarName($this->getPageVarName())
                ->setLimit($this->getLimit())
                ->setFrameLength(Mage::getStoreConfig('design/pagination/pagination_frame'))
                ->setJump(Mage::getStoreConfig('design/pagination/pagination_frame_skip'))
                ->setCollection($this->getCollection());

            return $pagerBlock->toHtml();
        }

        return '';
    }

Интересная строка: ->setshowamounts(ложь)

Если вы хотите изменить его на true, вам нужно переопределить блок своим собственным модулем.

 0
Author: Samir Shaban, 2014-06-29 15:34:19