Eliminar bloque del diseño en Magento 2

36

En Magento 1, podría eliminar un bloque agregado por un archivo de diseño agregando esto en mi bloque de diseño

<remove ="block_id_here" />

¿Cómo puedo hacer lo mismo para Magento 2?
Como ejercicio práctico, supongamos que tengo mi propio módulo del que quiero eliminar el bloqueo del panel de la página del panel de administración.
El bloque se agrega al app/code/Magento/Backend/view/adminhtml/layout/adminhtml_dashboard_index.xmlusar esto:

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

Supongo que necesito crear el archivo view/adminhtml/layout/adminhtml_dashboard_index.xmlen mi módulo, pero ¿qué necesito poner en él?

Marius
fuente

Respuestas:

70

En versiones más recientes de Magento2, el método de eliminación ahora es:

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

Ejemplo:

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

Es importante saberlo en caso de que intente hacer algo más que simplemente eliminar un elemento. Cambiar el espacio de nombres al diseño en lugar de page_configurationno permitirle hacer todo lo que necesita hacer.

Adam Daniels
fuente
Esto funcionó para mí. Sin embargo, lo extraño es que el ejemplo indicado en devdocs.magento.com/guides/v2.0/frontend-dev-guide/themes/… realmente usa la <remove />etiqueta. ¿Error en la documentación?
Giel Berkers
@GielBerkers Es muy probable que haya un error en la documentación; asegúrese de informarles github.com/magento/devdocs
Alan Storm
¿Cómo puedo hacer esto un archivo phtml
Waqar Ali
8

En la rama de desarrollo más reciente de magento 2, intente crear 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"/>

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

Renon Stewart
fuente
0

Entonces, supongamos que desea eliminar el bloque de título de la página de éxito. Primero necesitará encontrar el xml que es responsable de esa página específica en nuestro caso serávendor/magento/module-checkout/view/frontend/layout/checkout_onepage_success.xml

Y en este archivo tendrás el siguiente contenido:

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

Ahora necesitará extender este xml en su tema app/design/frontend/.../.../Magento_Checkout/layout/checkout_onepage_success.xml y dentro de él haga referencia al bloque que debe eliminar page.main.titley agregar de la siguiente remove="true"manera:

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

Si desea eliminar un bloque específico de todas las páginas de cms, puede lograr esto extendiendo el xml predeterminado vendor/magento/module-theme/view/frontend/layout/default.xml en su carpeta de temas de la siguiente app/design/frontend/.../.../Magento_Theme/layout/default.xmlmanera:

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