Rimuovere la barra degli strumenti dall'elenco dei prodotti tramite local.xml


13

Sono abituato a utilizzare local.xml per i miei aggiornamenti di layout, tuttavia non riesco a rimuovere la barra degli strumenti dal blocco elenco prodotti utilizzando i metodi remove o unsetChild.

Qualcuno può dire se questo non è effettivamente possibile o sto facendo qualcosa di sbagliato?

Ho provato:

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

e

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

e anche i <remove name="" />metodi ma niente funziona.

Risposte:


11

E non sarai in grado di rimuoverlo senza sovrascrivere qualcosa. Ecco come getToolbarBlock()appare il metodo:

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

Ciò significa che se getToolbarBlockNamenel layout esiste un blocco con un determinato nome (valore restituito da ), verrà restituito quel blocco. in caso contrario viene creato un nuovo blocco con tipo catalog/product_list_toolbare che viene restituito dal metodo.

[EDIT] Ho avuto un'idea folle. Perché non modificare il tipo di blocco della barra degli strumenti? In questo modo non verrà visualizzato come barra degli strumenti. Non l'ho provato ma penso che ne valga la pena.
Qualcosa di simile a:

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

Intendo aggiungere un blocco con lo stesso nome ma un tipo diverso. Se non funziona, ti preghiamo di non donwvote; è solo un'idea :)


1
Il suo codice come questo mi infastidisce davvero con Magento. Quindi ora ho bisogno di andare oltre le classi o i modelli in cui sarebbe bastato un bel layout xml
Marty Wallace,

Ho aggiornato la risposta con un'idea abbastanza folle da funzionare.
Marius

@MartyWallace - almeno c'è XML di layout in primo luogo. Penso che l'XML di layout rientri nella categoria "dai un mouse a un cookie" una volta che le persone sanno come usarlo.
benmarks

1
Tipi diversi possono causare problemi, poiché abbiamo bisogno della funzione setCollection per impostare il paging
Alex

1
davvero frustrante, un trucco ancora meno invadente sarebbe nasconderlo usando jquery con jQuery (document) .ready (function () {jQuery ('. limiter'). hide ();});
Danny Z,

8

Nel tuo local.xmlfile aggiungi quanto segue:

<catalog_category_default>
    <!-- Remove Toolbar by setting a blank template -->
    <reference name="product_list_toolbar">
        <action method="setTemplate"><template /></action>
    </reference>
</catalog_category_default>

Per un aggiornamento del layout personalizzato in una pagina di categoria, questa è la risposta migliore.
Joseph a SwiftOtter il

2

Sembra che non sia possibile rimuoverlo o annullarlo tramite XML a causa di uno strano modo in cui gli sviluppatori hanno creato la cosa. Tuttavia, puoi creare un modello vuoto e puntare le barre degli strumenti su questo modello vuoto.

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

Ciò lo rimuoverà dalle categorie normali, categorie ancorate e dalla pagina di ricerca.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.