Entfernen Sie die Symbolleiste aus der Produktliste über local.xml

13

Ich bin es gewohnt, local.xml für meine Layout-Aktualisierungen zu verwenden, kann die Symbolleiste jedoch nicht mit den Methoden remove oder unsetChild aus dem Produktlistenblock entfernen.

Kann jemand sagen, ob dies tatsächlich nicht möglich ist oder mache ich etwas falsch?

Ich habe versucht:

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

und

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

und auch die <remove name="" />methoden funktionieren aber nix.

Marty Wallace
quelle

Antworten:

11

Und Sie können es nicht entfernen, ohne etwas zu überschreiben. So sieht die getToolbarBlock()Methode aus:

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

Dies bedeutet, dass, wenn ein Block mit einem bestimmten Namen (Wert zurückgegeben vongetToolbarBlockName ) im Layout vorhanden ist, dieser Block zurückgegeben wird. Andernfalls wird ein neuer Block mit dem Typ erstellt catalog/product_list_toolbar, der von der Methode zurückgegeben wird.

[EDIT] Ich hatte gerade eine verrückte Idee. Warum nicht den Blocktyp der Symbolleiste ändern? Auf diese Weise wird es nicht als Symbolleiste gerendert. Ich habe es nicht ausprobiert, aber ich denke, es lohnt sich.
Etwas wie:

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

Ich meine, einen Block mit dem gleichen Namen, aber einem anderen Typ hinzuzufügen. Wenn es nicht funktioniert, geben Sie bitte keine Bewertung ab. Es ist nur in der Idee :)

Marius
quelle
1
Sein Code wie dieser nervt mich wirklich mit Magento. Jetzt muss ich Klassen oder Vorlagen überschreiben, bei denen ein nettes XML-Layout ausgereicht hätte
Marty Wallace,
Ich habe die Antwort mit einer Idee aktualisiert, die verrückt genug ist, um zu arbeiten.
Marius
@MartyWallace - zumindest steht Layout-XML an erster Stelle. Ich denke, dass Layout-XML in die Kategorie "Gib einer Maus ein Cookie" fällt, wenn die Leute wissen, wie man es benutzt.
benmarks
1
Ein anderer Typ kann Probleme verursachen, da wir die setCollection-Funktion benötigen, um das Paging
Alex
1
Sehr frustrierend, ein noch weniger aufdringlicher Hack wäre, es mit jquery mit jQuery (document) .ready (function () {jQuery ('. limiter'). hide ();}) zu verstecken.
Danny Z
8

Fügen Sie Ihrer local.xmlDatei Folgendes hinzu:

<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
quelle
Für eine benutzerdefinierte Layoutaktualisierung auf einer Kategorieseite ist dies die beste Antwort.
Joseph bei SwiftOtter
2

Es scheint, dass Sie dies nicht über XML entfernen oder deaktivieren können, weil die Entwickler das Ding auf seltsame Weise erstellt haben. Sie können jedoch eine leere Vorlage erstellen und die Symbolleisten stattdessen auf diese leere Vorlage verweisen.

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

Dadurch wird es aus den normalen Kategorien, den verankerten Kategorien und der Suchseite entfernt.

Chris Morris
quelle