Usuń pasek narzędzi z listy produktów za pośrednictwem local.xml

13

Jestem przyzwyczajony do używania local.xml do aktualizacji mojego układu, jednak wydaje mi się, że nie mogę usunąć paska narzędzi z bloku listy produktów za pomocą metod remove lub unsetChild.

Czy ktoś może powiedzieć, czy tak naprawdę nie jest to możliwe, czy robię coś złego?

Próbowałem:

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

i

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

a także <remove name="" />metody, ale nic nie działa.

Marty Wallace
źródło

Odpowiedzi:

11

I nie będziesz w stanie go usunąć bez przesłaniania czegoś. Oto jak getToolbarBlock()wygląda metoda:

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

Oznacza to, że jeśli blok o określonej nazwie (wartość zwrócona przez getToolbarBlockName) istnieje w układzie, wówczas ten blok zostanie zwrócony. w przeciwnym razie nowy blok jest tworzony z typem catalog/product_list_toolbari jest zwracany przez metodę.

[EDYCJA] Po prostu miałem szalony pomysł. Dlaczego nie zmienić typu bloku paska narzędzi? W ten sposób nie będzie renderowany jako pasek narzędzi. Nie próbowałem tego, ale myślę, że warto.
Coś jak:

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

Mam na myśli dodanie bloku o tej samej nazwie, ale innego typu. Jeśli to nie działa, nie donoś; to tylko pomysł :)

Marius
źródło
1
Taki kod tak naprawdę denerwuje mnie w Magento. Więc teraz muszę zastąpić klasy lub szablony, w których wystarczyłby jakiś ładny układ xml
Marty Wallace
Zaktualizowałem odpowiedź pomysłem wystarczająco szalonym, by zadziałać.
Marius
@MartyWallace - przynajmniej jest układ XML w pierwszej kolejności. Myślę, że XML układu należy do kategorii „daj ciasteczko”, gdy ludzie wiedzą, jak go używać.
zyskuje
1
Różne typy mogą powodować problemy, ponieważ potrzebujemy funkcji setCollection do ustawiania stronicowania
Alex
1
naprawdę frustrujące, jeszcze mniej inwazyjne hackowanie polegałoby na ukryciu go za pomocą jquery z jQuery (document) .ready (function () {jQuery ('. limiter'). hide ();});
Danny Z
8

W swoim local.xmlpliku dodaj:

<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
źródło
W przypadku niestandardowej aktualizacji układu na stronie kategorii jest to najlepsza odpowiedź.
Joseph w SwiftOtter,
2

Wygląda na to, że nie można tego usunąć ani rozbroić za pomocą XML z powodu dziwnego sposobu, w jaki twórcy zbudowali to. Możesz jednak utworzyć pusty szablon i zamiast tego skierować paski narzędzi na ten pusty szablon.

<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>

Spowoduje to usunięcie go z kategorii Normalne, zakotwiczone kategorie i strony wyszukiwania.

Chris Morris
źródło