2012-01-14 13 views
2

レイアウトから子/孫ブロックを解除するにはどうすればよいですか?私は全体Magento:レイアウトから2番目または3番目のブロックを解除しますか?

<reference name="content"> 
    <action method="unsetChild"><name>product.info</name></action> 
</reference> 

を削除することができますが、私は、 "product.info" から名前だけ= "product.info.media" をしませ削除する

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

から例えば

全体のproduct.info。

これを行う方法?

答えて

5

<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

0

をブロックは(ないコードで)レイアウトファイルを介して追加されている場合、あなたはそれが今までに設定されることを防ぐことができます。 、別の親から子ブロックを移動させる直接の親を参照し、その上にunsetChildを呼び出し、その後、別の親の子としてブロックインスタンスを割り当てるために挿入メソッドを使用する

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

はい、ブロックはbase/default/layout/catalog.xmlから追加されますが、サブブロックをすべて削除する必要はありません。別のブロック、つまりunsetChildの下に移動したいと思います。私はmagentoを初めて使っていますが、子どもではなく直接子供を釈放することができないのはばかばかしいようです。 – user766462

+0

同じタイプとテンプレート、さらには新しい場所に名前を付けても、新しいブロックを作成することはできます。 – clockworkgeek

関連する問題