Magento 2: `system.xml` कॉन्फ़िगरेशन के लिए डिफ़ॉल्ट मान


24

Magento 1 में, यह संभव था

  1. etc/system.xmlफ़ाइलों में सिस्टम कॉन्फ़िगरेशन अनुभाग के लिए एक उपयोगकर्ता इंटरफ़ेस कॉन्फ़िगरेशन

  2. etc/config.xmlफ़ाइलों में उन फ़ील्ड के लिए डिफ़ॉल्ट मान सेट करें

Magento के दृश्यों के पीछे से डेटा लोड होगा core_config_data, और यदि कुछ भी सेट नहीं किया गया था, तो वैश्विक रूप से सेट किए गए मानों के लिए डिफ़ॉल्ट होगा etc/config.xml। (सरलीकृत संस्करण - यह उससे थोड़ा अधिक जटिल है )

क्या मैगेंटो 2 में भी ऐसा ही किया जा सकता है? मुझे पता है कि UI तत्वों को कॉन्फ़िगर system.xmlकरना संभव है - लेकिन क्या इन सेटिंग्स के लिए डिफ़ॉल्ट मान सेट करना संभव है? यदि हां, तो इन मूल्यों को कहाँ या कैसे कॉन्फ़िगर किया जाना चाहिए?


मैं एक एक्सटेंशन विकसित कर रहा हूं, जहां ADMIN स्टोर >> कॉन्फ़िगरेशन मेरी एक्सटेंशन सेटिंग मैं विशेषता को खींचने योग्य और क्रमबद्ध सूची में रखना चाहता हूं और इसलिए मुझे इस विशेष फ़ील्ड के लिए कस्टम टेम्पलेट सेट करने की आवश्यकता है, इसलिए कोई भी तरीका है जो मैं कस्टम टेम्पलेट phtml फ़ाइल डाल सकता हूं system.xml के अंदर?
योगेश त्रिवेदी

जवाबों:


42

हां, Magento 2 अभी भी आपको कॉन्फ़िगरेशन फ़ाइल के अंदर डिफ़ॉल्ट मानों को परिभाषित करने की अनुमति देता है। नाम स्थान \ modulename \ आदि \ config.xml

<?xml version="1.0"?>
     <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
        <default>
            <sectionname>
                <groupname>
                    <fieldid>1</fieldid>
                </groupname>
            </sectionname>
        </default>
    </config>

सिस्टम कॉन्फ़िगरेशन सिस्टम। xml

<?xml version="1.0"?>

    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
        <system>
            <tab id="namespace_tab" translate="label" sortOrder="1">
                <label>COnfig Title</label>
            </tab>
            <section id="sectionname" translate="label" sortOrder="1" showInDefault="1" 
    showInWebsite="1" showInStore="1">
                <label>Some Title</label>
                <tab>namespace_tab</tab>
                <resource>Namespace_Modulename::system_config</resource>
                <group id="groupname" translate="label" type="text" sortOrder="1" showInDefault="1" 
    showInWebsite="1" showInStore="1">
                    <label>Some Configuration</label>
                    <field id="fieldid" translate="label" type="select" sortOrder="1" 
    showInDefault="1" showInWebsite="1" showInStore="1">
                        <label>Enable in frontend</label>
                        <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                    </field>
                 </group>   
            </section>
        </system>
    </config>

1
ध्यान दें कि अनुभाग नाम, समूहनाम, और फ़ील्ड सभी सहसंबंधी प्रत्येक अनुभाग के टैग आईडी से संबंधित हैं।
Eirik

हम इस डिफ़ॉल्ट मान को .php फ़ाइल में कैसे प्राप्त कर सकते हैं
आनंद ओंटेरगी

1
@AnandOntigeri कक्षा __construct () पद्धति में तत्काल $this->scopeConfig->getValue( $path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE );कहाँ $this->scopeConfigहोना चाहिए का उपयोग करें । \Magento\Framework\Cache\ConfigInterface $scopeConfig
वासिलि बर्लाकु

क्या कॉन्फ़िगर किए गए मानों के बजाय डिफ़ॉल्ट मान प्राप्त करना संभव है? वासिली की टिप्पणी वर्तमान मूल्य देती है, लेकिन मैं किसी साइट के वर्तमान कॉन्फ़िगरेशन की तुलना डिफ़ॉल्ट मानों से करना चाहता हूं (और यदि संभव हो तो रीसेट करें)। क्या config.xmlमैन्युअल लोडिंग और रीडिंग के बिना किया जा सकता है ?
जैक्स

@JaccoAmersfoort डिफ़ॉल्ट मान केवल तभी तक पहुँच योग्य हैं जब तक कि वे अधिलेखित न हों। Magento 2 सिस्टम मानों को core_config_data तालिका में संग्रहीत करता है और डिफ़ॉल्ट मानों को वर्तमान मान से अलग संग्रहीत नहीं करता है।
इरिक

7

Magento2आप जैसे डिफ़ॉल्ट मान सेट करने के लिए अनुमति देते हैं Magento1। जब आप संपर्क मॉड्यूल को देखते हैं Magento2,

system.xml संपर्क मॉड्यूल के लिए

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
    <system>
        <section id="contact" translate="label" type="text" sortOrder="100" showInDefault="1" showInWebsite="1" showInStore="1">
            <label>Contacts</label>
            <tab>general</tab>
            <resource>Magento_Contact::contact</resource>
            <group id="contact" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                <label>Contact Us</label>
                <field id="enabled" translate="label" type="select" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Enable Contact Us</label>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                    <backend_model>Magento\Contact\Model\System\Config\Backend\Links</backend_model>
                </field>
            </group>
            <group id="email" translate="label" type="text" sortOrder="50" showInDefault="1" showInWebsite="1" showInStore="1">
                <label>Email Options</label>
                <field id="recipient_email" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Send Emails To</label>
                    <validate>validate-email</validate>
                </field>
                <field id="sender_email_identity" translate="label" type="select" sortOrder="20" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Email Sender</label>
                    <source_model>Magento\Config\Model\Config\Source\Email\Identity</source_model>
                </field>
                <field id="email_template" translate="label comment" type="select" sortOrder="30" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Email Template</label>
                    <comment>Email template chosen based on theme fallback when "Default" option is selected.</comment>
                    <source_model>Magento\Config\Model\Config\Source\Email\Template</source_model>
                </field>
            </group>
        </section>
    </system>
</config>

और config.xmlसंपर्क मॉड्यूल के लिए

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
    <default>
            <contact>
                <enabled>1</enabled>
            </contact>
            <email>
                <recipient_email>
                    <![CDATA[hello@example.com]]>
                </recipient_email>
                <sender_email_identity>custom2</sender_email_identity>
                <email_template>contact_email_email_template</email_template>
            </email>
    </default>
</config>

अगर हम डिफॉल्ट वैल्यू सेट करना चाहते हैं, तो हमें इसकी आईडी की तरह मिलान करना होगा

<section id="contact"> <group id="contact"> <field id="enabled">

तब यह बन जाता है

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