Block aus dem Layout in Magento 2 entfernen

36

In Magento 1 konnte ich einen durch eine Layoutdatei hinzugefügten Block entfernen, indem ich diesen in meinen Layoutblock einfügte

<remove ="block_id_here" />

Wie kann ich dasselbe für Magento 2 tun?
Nehmen wir als praktische Übung an, ich habe ein eigenes Modul, aus dem ich den Dashboard-Block von der Admin-Dashboard-Seite entfernen möchte.
Der Block wird folgendermaßen hinzugefügt app/code/Magento/Backend/view/adminhtml/layout/adminhtml_dashboard_index.xml:

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

Ich view/adminhtml/layout/adminhtml_dashboard_index.xmlgehe davon aus, dass ich die Datei in meinem Modul erstellen muss , aber was muss ich einfügen?

Marius
quelle

Antworten:

70

In neueren Versionen von Magento2 lautet die Entfernungsmethode jetzt:

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

Beispiel:

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

Dies ist wichtig zu wissen, wenn Sie versuchen, mehr als nur ein Element zu entfernen. Wenn Sie den Namespace in Layout ändern, page_configurationkönnen Sie möglicherweise nicht alles tun, was Sie tun müssen.

Adam Daniels
quelle
Das hat bei mir funktioniert. Das Seltsame ist jedoch, dass das auf devdocs.magento.com/guides/v2.0/frontend-dev-guide/themes/… angegebene Beispiel tatsächlich den <remove />-Tag verwendet. Fehler in der Dokumentation?
Giel Berkers
@GielBerkers Sehr wahrscheinlich ein Fehler in der Dokumentation - bitte informieren Sie sie github.com/magento/devdocs
Alan Storm
Wie kann ich dies tun eine Phtml-Datei
Waqar Ali
8

Versuchen Sie im neuesten Entwicklungszweig von Magento 2, view / adminhtml / layout / adminhtml_dashboard_index.xml zu erstellen

<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"/>

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

Renon Stewart
quelle
0

Angenommen, Sie möchten das Schriftfeld von der Erfolgsseite entfernen. Zuerst müssen Sie die XML-Datei finden, die für diese bestimmte Seite verantwortlich istvendor/magento/module-checkout/view/frontend/layout/checkout_onepage_success.xml

Und in dieser Datei haben Sie den folgenden Inhalt:

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

Sie müssen diese XML-Datei nun in Ihrem Design erweitern app/design/frontend/.../.../Magento_Checkout/layout/checkout_onepage_success.xml und darin auf den Block verweisen, den Sie entfernen page.main.titleund remove="true"wie folgt hinzufügen müssen :

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

Wenn Sie einen bestimmten Block von allen CMS-Seiten entfernen möchten, können Sie dies erreichen, indem Sie die Standard-XML vendor/magento/module-theme/view/frontend/layout/default.xml in Ihrem Themenordner app/design/frontend/.../.../Magento_Theme/layout/default.xmlwie folgt erweitern:

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