Видаліть панель інструментів зі списку продуктів через local.xml


13

Я звик використовувати local.xml для моїх оновлень верстки, однак я не можу видалити панель інструментів із блоку списку продуктів, використовуючи методи видалення або unsetChild.

Хтось може сказати, якщо це насправді неможливо чи я роблю щось не так?

Я намагався:

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

і

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

а також <remove name="" />методи теж нічого, але нічого не працює.

Відповіді:


11

І ви не зможете її видалити, не скасувавши щось. Ось як getToolbarBlock()виглядає метод:

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

Це означає, що якщо в getToolbarBlockNameмакеті існує блок із певним іменем (значення, повернене ), то цей блок буде повернутий. інакше створюється новий блок з типом, catalog/product_list_toolbarякий повертається методом.

[EDIT] У мене просто була шалена ідея. Чому б не змінити тип блоку панелі інструментів? Таким чином, він не відображатиметься як панель інструментів. Я не пробував цього, але думаю, що того варто.
Щось на зразок:

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

Я маю на увазі додавання блоку з такою ж назвою, але іншого типу. Якщо це не працює, не повідомляйте про це; це просто в ідеї :)


1
Цей код, який справді дратує мене від Magento. Тож тепер мені потрібно переосмислити класи або шаблони, де вистачило б гарного макета xml
Marty Wallace

Я оновив відповідь ідеєю, досить розумною для роботи.
Маріус

@MartyWallace - принаймні, в першу чергу є макет XML. Я думаю, що макет XML потрапляє в категорію "дати миші файли cookie", коли люди знають, як ним користуватися.
орієнтири

1
Різні типи можуть спричинити проблеми, оскільки нам потрібна функція setCollection для встановлення пейджингу
Алекс

1
дійсно засмучуючи, ще менш нав'язливим хаком було б приховати його за допомогою jquery з jQuery (document) .ready (function () {jQuery ('. limiter'). hid ();});
Danny Z

8

У свій local.xmlфайл додайте наступне:

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

Для оновлення власної верстки на сторінці категорії це найкраща відповідь.
Джозеф у SwiftOtter

2

Здається, ви не зможете видалити це або зняти це через XML через якийсь дивний спосіб, як розроблені речі. Однак ви можете створити порожній шаблон і вказати на нього панелі інструментів.

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

Це видалить його із звичайних категорій, прив’язаних категорій та сторінки пошуку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.