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 का उपयोग करते हैं । प्रलेखन में त्रुटि?
गियल बर्क

@GielBerkers दस्तावेज़ीकरण में एक त्रुटि होने की संभावना है - उन्हें github.com/magento/devdocs
Alan Storm

मैं इसे phtml फ़ाइल कैसे कर सकता हूं
वकार अली

8

Magento 2 की सबसे हालिया देव शाखा में, दृश्य / adminhtml / लेआउट / 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 पृष्ठों से एक विशिष्ट ब्लॉक निकालना चाहते हैं, तो आप इस तरह से डिफ़ॉल्ट vendor/magento/module-theme/view/frontend/layout/default.xml फ़ोल्डर में 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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.