Видаліть блок з верстки в Magento 2


36

У Magento 1 я міг видалити блок, який додав файл макета, додавши це у мій блок компонування

<remove ="block_id_here" />

Як я можу зробити те саме для Magento 2?
В якості практичної вправи, скажімо, у мене є власний модуль, з якого я хочу видалити блок приладної панелі зі сторінки панелі адміністратора.
Блок додається з app/code/Magento/Backend/view/adminhtml/layout/adminhtml_dashboard_index.xmlвикористанням цього:

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

Я припускаю, що мені потрібно створити файл view/adminhtml/layout/adminhtml_dashboard_index.xmlу своєму модулі, але що мені потрібно вкласти?

Відповіді:


70

В останніх версіях Magento2 тепер використовується метод видалення:

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

Приклад:

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

Це важливо знати, якщо ви намагаєтеся зробити щось більше, ніж просто видалити елемент. Змінення простору імен на макет замість page_configurationможливо не дозволяє вам робити все, що вам потрібно зробити.


Це працювало для мене. Однак дивним є те, що в прикладі devdocs.magento.com/guides/v2.0/frontend-dev-guide/themes/… насправді використовується <remove />-tag. Помилка в документації?
Giel Berkers

@GielBerkers Дуже ймовірно, помилка в документації - обов'язково повідомте про це github.com/magento/devdocs
Алан Шторм

Як я можу це зробити файл phtml
Ali

8

У останній гілці розробників magento 2 спробуйте створити 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"/>

Джерело https://github.com/magento/magento2/search?l=xml&q=remove&utf8=%E2%9C%93


0

Тож скажімо, що ви хочете видалити заголовковий блок зі сторінки успіху. Спочатку вам потрібно буде знайти xml, який відповідає за цю конкретну сторінку, в нашому випадку це будеvendor/magento/module-checkout/view/frontend/layout/checkout_onepage_success.xml

І в цьому файлі ви матимете такий вміст:

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

Тепер вам потрібно буде розширити цей xml у своїй темі. app/design/frontend/.../.../Magento_Checkout/layout/checkout_onepage_success.xml А всередині нього посилаєтесь на блок, який потрібно видалити page.main.titleта додати remove="true"так:

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

Якщо ви хочете видалити певний блок зі всіх сторінок cms, ви можете досягти цього, розширивши xml за замовчуванням vendor/magento/module-theme/view/frontend/layout/default.xml у папці тем, app/design/frontend/.../.../Magento_Theme/layout/default.xmlяк:

<?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>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.