Supprimer la barre d'outils de la liste des produits via local.xml


13

Je suis habitué à utiliser local.xml pour mes mises à jour de mise en page, mais je n'arrive pas à supprimer la barre d'outils du bloc de liste de produits à l'aide des méthodes remove ou unsetChild.

Quelqu'un peut-il dire si ce n'est pas possible ou est-ce que je fais quelque chose de mal?

J'ai essayé:

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

et

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

et aussi les <remove name="" />méthodes mais rien ne fonctionne.

Réponses:


11

Et vous ne pourrez pas le supprimer sans remplacer quelque chose. Voici à quoi getToolbarBlock()ressemble la méthode:

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

Cela signifie que si un bloc avec un certain nom (valeur retournée par getToolbarBlockName) existe dans la mise en page, alors ce bloc sera retourné. sinon, un nouveau bloc est créé avec type catalog/product_list_toolbaret renvoyé par la méthode.

[EDIT] Je viens d'avoir une idée folle. Pourquoi ne pas changer le type de bloc de la barre d'outils? De cette façon, il ne sera pas rendu sous forme de barre d'outils. Je ne l'ai pas essayé mais je pense que ça vaut le coup.
Quelque chose comme:

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

Je veux dire ajouter un bloc avec le même nom mais un type différent. Si cela ne fonctionne pas, ne votez pas; c'est juste en idée :)


1
Son code comme celui-là me dérange vraiment avec Magento. Alors maintenant, j'ai besoin d'aller remplacer les classes ou les modèles où une belle mise en page XML aurait suffi
Marty Wallace

J'ai mis à jour la réponse avec une idée assez folle pour fonctionner.
Marius

@MartyWallace - au moins il y a la mise en page XML en premier lieu. Je pense que la mise en page XML tombe dans la catégorie «donner à la souris un cookie» une fois que les gens savent comment l'utiliser.
benmarks

1
Un type différent peut causer des problèmes, car nous avons besoin de la fonction setCollection pour définir la pagination
Alex

1
vraiment frustrant, un hack encore moins intrusif serait de le cacher en utilisant jquery avec jQuery (document) .ready (function () {jQuery ('. limiter'). hide ();});
Danny Z

8

Dans votre local.xmlfichier, ajoutez les éléments suivants:

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

Pour une mise à jour de mise en page personnalisée sur une page de catégorie, c'est la meilleure réponse.
Joseph à SwiftOtter le

2

Il semble que vous ne puissiez pas le supprimer ou le supprimer via XML en raison de la façon étrange dont les développeurs ont construit la chose. Cependant, vous pouvez créer un modèle vierge et pointer les barres d'outils vers ce modèle vierge à la place.

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

Cela le supprimera des catégories normales, des catégories ancrées et de la page de recherche.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.