2012-01-14 54 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