Rimuovi blocco dal layout in Magento 2


36

In Magento 1 ho potuto rimuovere un blocco aggiunto da un file di layout aggiungendolo nel mio blocco di layout

<remove ="block_id_here" />

Come posso fare lo stesso per Magento 2?
Come esercizio pratico, diciamo che ho il mio modulo dal quale desidero rimuovere il blocco dashboard dalla pagina dashboard amministratore.
Il blocco viene aggiunto app/code/Magento/Backend/view/adminhtml/layout/adminhtml_dashboard_index.xmlusando questo:

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

Presumo di dover creare il file view/adminhtml/layout/adminhtml_dashboard_index.xmlnel mio modulo, ma cosa devo inserire?

Risposte:


70

Nelle versioni più recenti di Magento2, il metodo di rimozione è ora:

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

Esempio:

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

Questo è importante da sapere nel caso in cui si stia tentando di fare qualcosa di più che rimuovere semplicemente un elemento. La modifica dello spazio dei nomi in layout anziché page_configurationpotrebbe non consentire di fare tutto ciò che è necessario.


Questo ha funzionato per me. La cosa strana è tuttavia che l'esempio riportato su devdocs.magento.com/guides/v2.0/frontend-dev-guide/themes/… utilizza effettivamente il <remove />tag. Errore nella documentazione?
Giel Berkers,

@GielBerkers Molto probabilmente un errore nella documentazione - assicurati di farglielo sapere github.com/magento/devdocs
Alan Storm

Come posso fare questo un file phtml
Waqar Ali

8

Nel ramo dev più recente di magento 2, prova a creare 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"/>

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


0

Supponiamo quindi che tu voglia rimuovere il cartiglio dalla pagina di successo. Per prima cosa dovrai trovare l'xml responsabile di quella pagina specifica nel nostro casovendor/magento/module-checkout/view/frontend/layout/checkout_onepage_success.xml

E in questo file avrai il seguente contenuto:

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

Ora dovrai estendere questo xml nel tuo tema app/design/frontend/.../.../Magento_Checkout/layout/checkout_onepage_success.xml E al suo interno fare riferimento al blocco che devi rimuovere page.main.titlee aggiungere in questo remove="true"modo:

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

Se desideri rimuovere un blocco specifico da tutte le pagine cms, puoi farlo estendendo l'xml predefinito vendor/magento/module-theme/view/frontend/layout/default.xml nella cartella del tema in questo app/design/frontend/.../.../Magento_Theme/layout/default.xmlmodo:

<?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>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.