Где установить параметры getShowAmounts в файле pager.phtml?
В template/page/html/pager.phtml
есть следующая строка, которая определяет, показывать ли количество товаров на панели инструментов списка продуктов:
<?php if($this->getShowAmounts()): ?>
Где находится getShowAmounts()
в бэкэнде?
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;
}
}
}
/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, вам нужно переопределить блок своим собственным модулем.