22

レイアウト 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>
4

2 に答える 2

39

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

于 2013-06-05T10:02:55.327 に答える