Hapus blokir dari tata letak di Magento 2

36

Di Magento 1 saya bisa menghapus blok yang ditambahkan oleh file tata letak dengan menambahkan ini di blok tata letak saya

<remove ="block_id_here" />

Bagaimana saya bisa melakukan hal yang sama untuk Magento 2?
Sebagai latihan praktis, katakanlah saya memiliki modul sendiri dari mana saya ingin menghapus blok dasbor dari halaman dasbor admin.
Blok ditambahkan dari app/code/Magento/Backend/view/adminhtml/layout/adminhtml_dashboard_index.xmlpenggunaan ini:

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

Saya berasumsi saya perlu membuat file view/adminhtml/layout/adminhtml_dashboard_index.xmldalam modul saya, tetapi apa yang harus saya masukkan ke dalamnya?

Marius
sumber

Jawaban:

70

Di versi Magento2 yang lebih baru, metode hapus sekarang:

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

Contoh:

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

Ini penting untuk diketahui jika Anda mencoba melakukan sesuatu lebih dari sekadar menghapus elemen. Mengubah ruang nama menjadi tata letak alih-alih page_configurationmungkin tidak memungkinkan Anda melakukan semua yang perlu Anda lakukan.

Adam Daniels
sumber
Ini berhasil untuk saya. Namun anehnya, bahwa contoh yang disebutkan di devdocs.magento.com/guides/v2.0/frontend-dev-guide/themes/… sebenarnya menggunakan <remove />-tag. Kesalahan dalam dokumentasi?
Giel Berkers
@GielBerkers Kemungkinan besar kesalahan dalam dokumentasi - pastikan untuk memberi tahu mereka github.com/magento/devdocs
Alan Storm
Bagaimana saya bisa melakukan ini file phtml
Waqar Ali
8

Di cabang dev terbaru dari magento 2, coba buat tampilan / adminhtml / tata letak / 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"/>

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

Renon Stewart
sumber
0

Jadi katakanlah Anda ingin menghapus blok judul dari halaman sukses. Pertama, Anda perlu menemukan xml yang bertanggung jawab untuk halaman tertentu dalam kasus kamivendor/magento/module-checkout/view/frontend/layout/checkout_onepage_success.xml

Dan dalam file ini Anda akan memiliki konten berikut:

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

Anda sekarang perlu memperpanjang xml ini di tema Anda app/design/frontend/.../.../Magento_Checkout/layout/checkout_onepage_success.xml Dan di dalamnya referensi blok yang perlu Anda hapus page.main.titledan tambahkan remove="true"seperti:

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

Jika Anda ingin menghapus blok tertentu dari semua halaman cms Anda dapat mencapainya dengan memperluas xml default vendor/magento/module-theme/view/frontend/layout/default.xml di folder tema Anda app/design/frontend/.../.../Magento_Theme/layout/default.xmlseperti:

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