Xóa khối khỏi bố cục trong Magento 2


36

Trong Magento 1 tôi có thể xóa một khối được thêm bởi tệp bố cục bằng cách thêm khối này vào khối bố cục của mình

<remove ="block_id_here" />

Làm thế nào tôi có thể làm tương tự cho Magento 2?
Như một bài tập thực tế, giả sử tôi có mô-đun riêng mà tôi muốn xóa khối bảng điều khiển khỏi trang bảng điều khiển quản trị viên.
Khối được thêm vào app/code/Magento/Backend/view/adminhtml/layout/adminhtml_dashboard_index.xmlbằng cách sử dụng này:

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

Tôi giả sử tôi cần tạo tệp view/adminhtml/layout/adminhtml_dashboard_index.xmltrong mô-đun của mình, nhưng tôi cần đặt gì vào nó?

Câu trả lời:


70

Trong các phiên bản gần đây hơn của Magento2, phương thức xóa hiện là:

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

Thí dụ:

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

Điều này rất quan trọng để biết trong trường hợp bạn đang cố gắng làm điều gì đó hơn là chỉ loại bỏ một yếu tố. Thay đổi không gian tên thành bố cục thay vì page_configurationcó thể không cho phép bạn làm mọi thứ bạn cần làm.


Điều này làm việc cho tôi. Tuy nhiên, điều kỳ lạ là ví dụ được nêu trên devdocs.magento.com/guides/v2.0/frontend-dev-guide/theme/ Lỗi thực sự sử dụng <remove />-tag. Lỗi trong tài liệu?
Giel Berkers

@GielBerkers Rất có thể có lỗi trong tài liệu - hãy chắc chắn cho họ biết github.com/magento/devdocs
Alan Storm

Làm thế nào tôi có thể làm điều này một tập tin phtml
Waqar Ali

8

Trong nhánh dev gần đây nhất của magento 2, hãy thử tạo 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"/>

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


0

Vì vậy, giả sử bạn muốn xóa khối tiêu đề khỏi trang thành công. Trước tiên, bạn sẽ cần tìm xml chịu trách nhiệm cho trang cụ thể đó trong trường hợp của chúng tôivendor/magento/module-checkout/view/frontend/layout/checkout_onepage_success.xml

Và trong tập tin này, bạn sẽ có nội dung sau:

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

Bây giờ bạn sẽ cần mở rộng xml này trong chủ đề của mình app/design/frontend/.../.../Magento_Checkout/layout/checkout_onepage_success.xml Và bên trong nó tham chiếu khối bạn cần xóa page.main.titlevà thêm remove="true"như vậy:

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

Nếu bạn muốn xóa một khối cụ thể khỏi tất cả các trang cms, bạn có thể đạt được điều này bằng cách mở rộng xml mặc định vendor/magento/module-theme/view/frontend/layout/default.xml trong thư mục chủ đề của bạn app/design/frontend/.../.../Magento_Theme/layout/default.xmlnhư vậy:

<?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>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.