web-dev-qa-db-ja.com

Magento-更新XMLを使用してブロックを削除

レイアウトxmlファイルを使用して既存のブロックを削除するにはどうすればよいですか?具体的には、「top.switches」という名前のブロックから「currency」という名前のブロックを削除します。次のように、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>
21
Benubird

1つのレイアウトxmlファイルで定義されたブロックを別のxmlファイルを介して削除するには、2つの方法があります。

<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要素の説明を見つけることができます here ですが、アクションタグで使用できるメソッドについては説明していません。そのためには、unsetChild、unsetCallChild、insert、sortChildrenなどのあらゆる種類の便利な機能を備えたブロッククラスapp/code/core/Mage/Core/Block/Abstract.phpを調べる必要があります。

37
Benubird

local.xmlという名前のファイルをレイアウトディレクトリに追加します。 local.xmlで、「remove」タグを使用してブロックを削除できます。ところで、removeタグは「layout」と「default」の間にある必要があり、ファイルは次のようになります。

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