Magento: сбросить блок второго / третьего уровня из макета? - PullRequest
2 голосов
/ 14 января 2012

Как убрать блок ребенка / внука из макета?

Например, от

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

но я хочу удалить только name = "product.info.media" из "product.info", а не весь product.info.

Как это сделать?

Ответы [ 3 ]

5 голосов
/ 15 января 2012

Чтобы переместить дочерний блок от одного родителя к другому, обратитесь к прямому родителю, вызовите для него 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>

Снятие блоков внуков не поддерживается, я не думаю, что это глупо, но разумно (потому что, где бы вы остановились - unsetGrandGrandGrandChild ()?).

3 голосов
/ 14 января 2012

Попробуйте это:

<reference name="product.info">
    <action method="unsetChild"><name>product.info.media</name></action>
</reference>
0 голосов
/ 14 января 2012

Если блок добавляется через файл макета (не по коду), вы можете запретить его установку с помощью;

<remove name="product.info.media" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...