2012-01-14 56 views
2

如何从布局中取消设置子/孙块?Magento:取消布局中的第二/第三级块?

例如从

<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.media” “product.info”,而不是整个产品信息。

如何做到这一点?

回答

5
为了

从一个亲本移动子块到另一个,参考直接父节点,呼叫unsetChild它,然后使用插入方法将块实例作为子分配给不同的父。不支持

<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> 

Unseting孙子块,我不认为这就是愚蠢的,但合理的(因为在那里你会停止 - unsetGrandGrandGrandChild()?)。

3

试试这个:

<reference name="product.info"> 
    <action method="unsetChild"><name>product.info.media</name></action> 
</reference> 
+0

不工作,这是否适合你? – user766462 2012-01-14 15:39:18

0

如果该块是通过布局文件(不是代码)添加的,那么你可以阻止它曾经被设定;

<remove name="product.info.media" /> 
+0

是的,该块是从base/default/layout/catalog.xml添加的,但我不想删除子块alltogether,我想将它移动到另一个块下,因此unsetChild。当然,我对magento很陌生,但是看起来很愚蠢,只能够解除直接的孩子而不是子女。 – user766462 2012-01-14 15:41:26

+0

您仍然可以在新位置创建具有相同类型和模板的新块,甚至可以创建新块。 – clockworkgeek 2012-01-14 16:41:59