Magento 2의 레이아웃에서 블록 제거


35

Magento 1에서는 레이아웃 파일에 이것을 추가하여 레이아웃 파일에 의해 추가 된 블록을 제거 할 수있었습니다

<remove ="block_id_here" />

Magento 2에 대해 동일한 작업을 수행하려면 어떻게해야합니까?
실제 연습으로, 관리 대시 보드 페이지에서 대시 보드 블록을 제거하려는 자체 모듈이 있다고 가정합니다.
다음을 app/code/Magento/Backend/view/adminhtml/layout/adminhtml_dashboard_index.xml사용하여 블록을 추가 합니다.

<referenceContainer name="content">
    <block class="Magento\Backend\Block\Dashboard" name="dashboard"/>
</referenceContainer>

view/adminhtml/layout/adminhtml_dashboard_index.xml내 모듈 에서 파일을 만들어야한다고 가정 하지만 무엇을 넣어야합니까?

답변:


70

최신 버전의 Magento2에서 remove 메소드는 다음과 같습니다.

<referenceBlock name="block_name" remove="true"/>

예:

<?xml version="1.0"?>
<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="block_name" remove="true"/>
    </body>
</page>

이것은 단순히 요소를 제거하는 것보다 더 많은 일을하려는 경우 알아야합니다. 네임 스페이스를 레이아웃 대신 레이아웃으로 변경하면 page_configuration필요한 모든 작업을 수행 할 수 없습니다.


이것은 나를 위해 일했습니다. 그러나 devdocs.magento.com/guides/v2.0/frontend-dev-guide/themes/…에 명시된 예제는 실제로 <remove />-tag를 사용 한다는 것이 이상 합니다 . 설명서에 오류가 있습니까?
Giel Berkers

@GielBerkers 문서에 오류가있을 가능성이 높습니다. github.com/magento/devdocs
Alan Storm

이 작업을 phtml 파일로 수행하는 방법
Waqar Ali

8

magento 2의 최신 개발 브랜치에서 view / adminhtml / layout / adminhtml_dashboard_index.xml을 생성하십시오.

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-dashboard" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
<body>
    <referenceBlock name="dashboard" remove="true"/>

소스 https://github.com/magento/magento2/search?l=xml&q=remove&utf8=%E2%9C%93


0

성공 페이지에서 제목 블록을 제거한다고 가정 해 봅시다. 먼저 우리의 경우 특정 페이지를 담당하는 XML을 찾아야합니다.vendor/magento/module-checkout/view/frontend/layout/checkout_onepage_success.xml

그리고이 파일에는 다음과 같은 내용이 있습니다.

<?xml version="1.0"?>
<!--
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <head>
        <title>Success Page</title>
    </head>
    <body>
        <referenceBlock name="page.main.title">
            <block class="Magento\Checkout\Block\Onepage\Success" name="checkout.success.print.button" template="Magento_Checkout::button.phtml"/>
            <action method="setPageTitle">
                <argument translate="true" name="title" xsi:type="string">Thank you for your purchase!</argument>
            </action>
        </referenceBlock>
        <referenceContainer name="content">
            <block class="Magento\Checkout\Block\Onepage\Success" name="checkout.success" template="Magento_Checkout::success.phtml" cacheable="false">
                <container name="order.success.additional.info" label="Order Success Additional Info"/>
            </block>
            <block class="Magento\Checkout\Block\Registration" name="checkout.registration" template="Magento_Checkout::registration.phtml" cacheable="false"/>
        </referenceContainer>
    </body>
</page>

이제 테마에서이 xml을 확장해야하며 app/design/frontend/.../.../Magento_Checkout/layout/checkout_onepage_success.xml 내부에서 제거 page.main.title하고 추가 해야하는 블록을 참조하십시오 remove="true".

<?xml version="1.0"?>
<!--
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <head>
    </head>
    <body>
        <referenceBlock name="page.main.title" remove="true" />
    </body>
</page>

모든 cms 페이지에서 특정 블록을 제거 vendor/magento/module-theme/view/frontend/layout/default.xml 하려면 테마 폴더 의 기본 xml 을 다음 app/design/frontend/.../.../Magento_Theme/layout/default.xml과 같이 확장하면됩니다 .

<?xml version="1.0"?>
<!--
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="page.main.title" remove="true" />
    </body>
</page>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.