Удалить панель инструментов из списка продуктов через local.xml

13

Я привык использовать local.xml для своих обновлений макета, однако я не могу удалить панель инструментов из блока списка продуктов, используя методы remove или unsetChild.

Кто-нибудь может сказать, если это на самом деле невозможно или я делаю что-то не так?

Я пытался:

<action method="unsetChild">  
    <alias>toolbar</alias>
</action>

и

<action method="unsetChild">  
    <alias>product_list_toolbar</alias>
</action>

а также <remove name="" />методы, но ничего не работает.

Марти Уоллес
источник

Ответы:

11

И вы не сможете удалить его без переопределения чего-либо. Вот как getToolbarBlock()выглядит метод:

public function getToolbarBlock()
{
    if ($blockName = $this->getToolbarBlockName()) {
        if ($block = $this->getLayout()->getBlock($blockName)) {
            return $block;
        }
    }
    $block = $this->getLayout()->createBlock($this->_defaultToolbarBlock, microtime());
    return $block;
} 

Это означает, что если getToolbarBlockNameв макете существует блок с определенным именем (значением, возвращаемым ), то этот блок будет возвращен. в противном случае создается новый блок с типом, catalog/product_list_toolbarкоторый возвращается методом.

[РЕДАКТИРОВАТЬ] У меня просто была сумасшедшая идея. Почему бы не изменить тип блока панели инструментов? Таким образом, он не будет отображаться как панель инструментов. Я не пробовал это, но я думаю, что оно того стоит.
Что-то вроде:

<reference name="product_list">
    <block type="core/template" name="product_list_toolbar" />
</reference>

Я имею в виду добавление блока с тем же именем, но другого типа. Если это не работает, пожалуйста, не пишите; это просто в идее :)

Мариус
источник
1
Такой код, который действительно раздражает меня в Magento. Так что теперь мне нужно переопределить классы или шаблоны, где бы хватило какого-нибудь красивого макета XML
Марти Уоллес
Я обновил ответ идеей, достаточно сумасшедшей, чтобы работать.
Мариус
@MartyWallace - по крайней мере, в первую очередь это макет XML. Я думаю, что XML-макет попадает в категорию «дайте мышке печенье», когда люди знают, как его использовать.
отметки
1
Различные типы могут вызывать проблемы, так как нам нужна функция setCollection для установки подкачки
Alex
1
действительно разочаровывает, еще менее навязчивым хаком было бы скрыть это с помощью jquery с jQuery (document) .ready (function () {jQuery ('. limiter'). hide ();});
Дэнни Z
8

В вашем local.xmlфайле добавьте следующее:

<catalog_category_default>
    <!-- Remove Toolbar by setting a blank template -->
    <reference name="product_list_toolbar">
        <action method="setTemplate"><template /></action>
    </reference>
</catalog_category_default>
Mojo
источник
Для пользовательского обновления макета на странице категории это лучший ответ.
Джозеф в SwiftOtter
2

Кажется, вы не можете удалить это или сбросить это через XML из-за какого-то странного способа, которым разработчики создавали это. Однако вы можете создать пустой шаблон и указать вместо него панели инструментов на этот пустой шаблон.

<catalog_category_default>
    <reference name="product_list_toolbar">
        <action method="setTemplate">
            <template>theme/package/blank.phtml</template>
        </action>
    </reference>
</catalog_category_default>
<catalog_category_layered>
    <reference name="product_list_toolbar">
        <action method="setTemplate">
            <template>theme/package/blank.phtml</template>
        </action>
    </reference>
</catalog_category_layered>
<catalogsearch_result_index>
    <reference name="product_list_toolbar">
        <action method="setTemplate">
            <template>theme/package/blank.phtml</template>
        </action>
    </reference>
</catalogsearch_result_index>

Это удалит его из нормальных категорий, привязанных категорий и страницы поиска.

Крис Моррис
источник