Remova a barra de ferramentas da lista de produtos via local.xml

13

Estou acostumado a usar o local.xml para minhas atualizações de layout, mas não consigo remover a barra de ferramentas do bloco da lista de produtos usando os métodos remove ou unsetChild.

Alguém pode dizer se isso realmente não é possível ou estou fazendo algo errado?

Eu tentei:

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

e

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

e também os <remove name="" />métodos também, mas nada funciona.

Marty Wallace
fonte

Respostas:

11

E você não poderá removê-lo sem substituir algo. Aqui está como o getToolbarBlock()método se parece:

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

Isso significa que se um bloco com um determinado nome (valor retornado por getToolbarBlockName) existir no layout, esse bloco será retornado. caso contrário, um novo bloco será criado com o tipo catalog/product_list_toolbare retornado pelo método

[EDIT] Acabei de ter uma ideia maluca. Por que não mudar o tipo de bloco da barra de ferramentas? Dessa forma, não será renderizado como uma barra de ferramentas. Eu não tentei, mas acho que vale a pena.
Algo como:

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

Quero dizer, adicionar um bloco com o mesmo nome, mas com um tipo diferente. Se não funcionar, não faça voto; é apenas uma idéia :)

Marius
fonte
1
Seu código como este que realmente me incomoda com o Magento. Então agora eu preciso ir aulas de substituição ou modelos, onde alguns xml disposição agradável seria suficiente
Marty Wallace
Atualizei a resposta com uma ideia maluca o suficiente para funcionar.
Marius
@ MartyWallace - pelo menos há XML de layout em primeiro lugar. Eu acho que o XML do layout se enquadra na categoria "dê um cookie ao mouse" quando as pessoas sabem como usá-lo.
benmarks
1
Tipo diferente pode causar problemas, como precisamos a função setCollection ao conjunto de paginação
Alex
1
realmente frustrante, um truque ainda menos intrusivo seria ocultá-lo usando jquery com jQuery (documento) .ready (function () {jQuery ('. limitador'). hide ();});
Danny Z
8

No seu local.xmlarquivo, adicione o seguinte:

<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
fonte
Para uma atualização de layout personalizada em uma página de categoria, esta é a melhor resposta.
Joseph no SwiftOtter
2

Parece que você não pode removê-lo ou desmarcá-lo via XML devido a uma maneira estranha de os desenvolvedores construírem a coisa. No entanto, você pode criar um modelo em branco e apontar as barras de ferramentas para esse modelo em branco.

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

Isso o removerá das categorias Normal, Categorias ancoradas e da página de pesquisa.

Chris Morris
fonte