Извините за избыточность этого вопроса, но ни один из примеров и решений для меня не сработал. У меня есть пользовательский модуль, который расширяет Mage_Catalog_Block_Product_List
. Единственная функция в ней - _getProductCollection
, которая устанавливает коллекцию товаров на основе того, по какому атрибуту вы хотите фильтровать. Это довольно просто и не требует обновления макета. Я поместил блок на страницу, добавив в раздел «Содержимое» страницы CMS следующее:
{{block type="vps_featured/list" name="vps_featured_list" attribute_name="best_sellers" template="catalog/product/sale_list.phtml"}}
Так как он расширяется Mage_Catalog_Block_Product_List
, я получаю все навороты для страницы со списком продуктов, включая панель инструментов. Тем не менее, пейджер не там. Я попробовал несколько разных предложений, но ни одно из них не помогло.
Я заглянул в Toolbar.php в коде ядра и нашел, где он вызывает getPagerHtml
. Я поместил туда несколько отладочных операторов и определил, что она вызывает эту функцию при размещении моего пользовательского блока на странице, но $this->getChild('product_list_toolbar_pager')
не возвращает блок, предположительно потому, что его там нет. Я попытался добавить блок, используя XML-файл обновления макета и добавив теги <frontend><layout><updates>...
в мою конфигурацию, но, похоже, это ничего не дало.
У меня есть расширение CommerceBug от Alan Storm, поэтому я поднял его и экспортировал XML-макет страницы. Он вообще не содержит какого-либо блока панели инструментов, несмотря на то, что панель инструментов находится на странице и не работает только пейджер. Если я делаю то же самое на целевой странице категории, она показывает блок панели инструментов в макете XML. Так что я явно что-то здесь упустил, но я не знаю, что. Я надеюсь, что кто-то может помочь:)
Brian