ลบ block จาก layout ใน Magento 2


35

ใน 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
Alan Storm

ฉันจะทำไฟล์ phtml นี้ได้อย่างไร
Waqar Ali

8

ในสาขา dev ล่าสุดของ 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>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.