Magento2 में मॉड्यूल के माध्यम से टेम्पलेट को ओवरराइट कैसे करें


9

मैं एक मॉड्यूल बना रहा हूं और टेम्पलेट को अधिलेखित करना चाहता हूं app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/edit/options.phtml

क्या यह मॉड्यूल में संभव है (थीम नहीं)

दुर्भाग्य से यह लेआउट XML के माध्यम से मॉड्यूल नाम को बदलने के लिए सुपर-आसान नहीं लगता है, क्योंकि यह https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/Block में हार्ड-कोडित है /Adminhtml/Product/Edit/Tab/Options.php#L21


कृपया जवाब के लिए इस लिंक को देखें magento.stackexchange.com/questions/76434/…
दिव्य मुरलीधरन

कृपया जवाब के लिए इस लिंक को देखें magento.stackexchange.com/questions/76434/…
दिव्य मुरलीधरन

जवाबों:


10

आप मॉड्यूल फ़ाइल का लेआउट फ़ोल्डर जोड़ें [विक्रेता] / [मॉड्यूल नाम] /view/adminhtml/layout/catalog_product_options.xml

<?xml version="1.0"?>
<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/layout_generic.xsd">
    <referenceBlock name="admin.product.options">
        <arguments>
            <argument name="template" xsd:type="string">[Vendor]/[ModuleName]::product_options.phtml</argument>
        </arguments>
    </referenceBlock>
</layout>

कैटलॉग के बाद आपको लेआउट लोड करने के लिए, इस लाइन को मॉड्यूल xml में जोड़ने की आवश्यकता है

<sequence>
        <module name="Magento_Catalog"/>
</sequence>

आपको नाम कहां से मिला admin.product.options?
एलेक्स

बस लेआउट फ़ाइलों द्वारा \ Magento \ कैटलॉग \ ब्लॉक \ Adminhtml \ Product \ Edit \ Tab \ विकल्प खोजें और Magento / कैटलॉग / देखने / व्यवस्थापक / लेआउट / कैटलॉग / कैटलॉग_प्रोडक्ट्स.xml में घोषणा करें
KAnder

1
यह नहीं होना चाहिए Vendor_ModuleName::product_options.phtml?
गियल बर्क

हां, बिंदु के लिए धन्यवाद
कांड

2
यह समाधान केवल तभी काम करता है, जब मूल टेम्पलेट ब्लॉक.फैप फ़ाइल में सेट किया गया था। यदि मूल टेम्प्लेट लेआउट.xml पर सेट है, तो यह समाधान काम नहीं करेगा। एक बेहतर दृष्टिकोण हमेशा के <action method="setTemplate">बजाय उपयोग करना है <arguments>। यह समाधान सभी मामलों में काम करता है।
जलगुट

3
  1. अपने मॉड्यूल में संबंधित लेआउट फ़ाइल बनाएं:

[विक्रेता] / [ModuleName] /view/adminhtml/layout/catalog_product_options.xml

  1. अपना कस्टम टेम्पलेट कॉन्फ़िगरेशन सेट करें
<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/layout_generic.xsd">
    <referenceBlock name="admin.product.options">
        <action method="setTemplate">
            <argument name="template" xsi:type="string">[Vendor]_[ModuleName]::product_options.phtml</argument>
        </action>
    </referenceBlock>
</layout>

नोट: यह उपयोग करने के लिए बहुत महत्वपूर्ण है <action method="setTemplate">के बजाय <arguments><arguments>केवल तभी काम करेगा जब ब्लॉक में xml घोषणा पर निर्दिष्ट दूसरा टेम्पलेट नहीं होगा। किसी अन्य मामले में, आपको <action method="setTemplate">मौजूदा टेम्पलेट को ओवरराइड करने की आवश्यकता है। इसका उपयोग करना बेहतर है <action method="setTemplate">क्योंकि यह हमेशा काम करता है।


0

हां, आप अपने कस्टम मॉड्यूल के ऐप / कोड से टेम्पलेट फ़ाइलों को अधिलेखित कर सकते हैं। हालाँकि, ध्यान रखें कि Magento की इनहेरिटेंस कॉन्सेप्ट में, ऐप / डिज़ाइन से फ़ाइलें (टेम्प्लेट, लेआउट, स्टैटिक फाइल्स) ऐप / कोड में समान ओवरराइट करते हैं। जिस तरह चाइल्ड थीम पैरेंट थीम को ओवरराइट कर देती है।

इसलिए, मैं अपने कस्टम मॉड्यूल के लिए एक कस्टम थीम बनाना सबसे अच्छा मानता हूं और अपने सभी phtml, xml, css, js, font और image files को ऐप / डिज़ाइन में जोड़ देता हूँ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.