レイアウト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>
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を調べる必要があります。
local.xmlという名前のファイルをレイアウトディレクトリに追加します。 local.xmlで、「remove」タグを使用してブロックを削除できます。ところで、removeタグは「layout」と「default」の間にある必要があり、ファイルは次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<layout>
<default>
<remove name="BLOCK_NAME" />
</default>
</layout>