Подтвердить что ты не робот

Magento - удалить блок с помощью XML-обновления

Как использовать XML файл макета для удаления уже существующего блока? В частности, я хочу удалить блок с именем "currency" из блока с именем "top.switches". Он вставляется в файл directory.xml, например:

<default>
    <reference name="top.switches">
        <block type="directory/currency" name="currency" before="store_language" template="directory/currency.phtml"/>
    </reference>
    <reference name="head">
        <block type="core/template" name="optional_zip_countries" as="optional_zip_countries" template="directory/js/optional_zip_countries.phtml" />
    </reference>
</default>
4b9b3361

Ответ 1

Есть два метода удаления блока, определенного в одном XML файле макета, через другой XML файл:

<default>
    <reference name="top.switches">
        <action method="unsetChild"><name>currency</name></action>
    </reference>
</default>

И как обычно вы это ожидаете:

<default>
    <reference name="top.switches">
        <remove name="currency" />
    </reference>
</default>

Здесь вы можете найти объяснение различных элементов XML-макета , но не охватывают методы, доступные для тега действий. Для этого вам нужно взглянуть на класс класса app/code/core/Mage/Core/Block/Abstract.php, в котором есть всевозможные полезные функции, такие как unsetChild, unsetCallChild, insert, sortChildren и т.д.

Ответ 2

добавить файл с именем local.xml в каталог макета. то в local.xml вы можете удалить любой блок с тегом "remove". BTW тег remove должен находиться между "макетом" и "по умолчанию", то файл должен быть:

<?xml version="1.0" encoding="UTF-8"?>
<layout>
   <default>
     <remove name="BLOCK_NAME" />
  </default>
</layout>