如何从布局中取消设置子/孙块?
例如来自
<reference name="content">
<block type="catalog/product_view" name="product.info" template="catalog/product/view.phtml">
<block type="catalog/product_view_media" name="product.info.media" as="media" template="catalog/product/view/media.phtml"/>
</block>
</reference>
我可以删除整个
<reference name="content">
<action method="unsetChild"><name>product.info</name></action>
</reference>
但我想从“product.info”中删除name =“product.info.media”,而不是整个product.info。
怎么做?
答案 0 :(得分:5)
要将子块从一个父项移动到另一个父项,请引用直接父项,在其上调用unsetChild,然后使用insert方法将块实例作为子项分配给另一个父项。
<reference name="product.info">
<!-- use the alias here -->
<action method="unsetChild"><child>media</child></action>
</reference>
<reference name="new.parent">
<!-- use the full block name here -->
<action method="insert"><child>product.info.media</child></action>
</reference>
不支持未出现的孙子块,我不认为那是愚蠢但明智的(因为你会在哪里停止 - unsetGrandGrandGrandChild()?)。
答案 1 :(得分:3)
试试这个:
<reference name="product.info">
<action method="unsetChild"><name>product.info.media</name></action>
</reference>
答案 2 :(得分:0)
如果通过布局文件(而不是代码)添加块,则可以防止它被设置;
<remove name="product.info.media" />