Magento1: नए एक्सटेंशन के सिस्टम XML में निर्भरता कैसे सेट करें


11

मैं तीसरे पक्ष के विस्तार को संशोधित करना चाहता हूं और नए विस्तार के साथ इसकी कार्यक्षमता को ओवरराइड करना चाहता हूं। लेकिन मेरी मुख्य चिंता यह है कि क्या 3 पार्टी एक्सटेंशन सक्षम नहीं है या मेरे Magento फ़ोल्डर में मौजूद है? मैं system.xml या config.xml में ifconfig का उपयोग करके निर्भरता सेट करना चाहता हूं, लेकिन मुझे एक्सटेंशन स्तर पर यह सुनिश्चित नहीं है कि फ़ोल्डर में एक्सटेंशन मौजूद है या नहीं यह कैसे जांचें। TIA।

संपादित करें: निर्भरता उत्तर के लिए @ सैंडर मंगल को धन्यवाद। अब मुझे और स्पष्ट होने दो।

मैं एप्लिकेशन / etc / मॉड्यूल / MyNameSpace_MyModule.xml का उपयोग करके आसानी से निर्भरता सेट कर सकता हूं, लेकिन जब सिस्टम से मेरा तीसरा पक्ष एक्सटेंशन हटा दिया जाता है, तो त्रुटि रिपोर्ट उत्पन्न होती है और इसके "मॉड्यूल" MyNameSpace_MyMulule "" मॉड्यूल को "3rdPartyExtension" की आवश्यकता होती है और आगे निष्पादन का कारण बनता है। उत्पन्न अपवाद लेकिन क्या होगा अगर मैं अपवाद उत्पन्न किए बिना आगे निष्पादित करना चाहता हूं? बस 3Eteyextension को निष्पादित करने के लिए मैजेंटो को रोकने के बिना मौजूद नहीं होने पर बस प्रभाव नहीं होगा। इसलिए मैं पूछ रहा हूं कि क्या कोई ऐसी सुविधा है जैसे हमने लेआउट फ़ाइलों के लिए किया था। चेक। नोट ifconfig यहाँ।

<reference name="sales.order.print">
        <action method="setTemplate" ifconfig="3rdparty/config">
            <template>mytemplate.phtml</template>
        </action>
    </reference>

दूसरा संपादन: ज़ीवा का धन्यवाद। मैंने वही किया जो मैं चाहता हूं, लेकिन अगर मैंने परीक्षण के उद्देश्य से अपना तीसरा पक्ष विस्तार हटा दिया, तो यह देखने के लिए कि मैंने अपना सिस्टम बनाया है।

<config>
   <sections>        
        <payment>
            <groups>
                <3rdparty extension translate="label" module="payment">
                    <label>3rd Party</label>
                    <frontend_type>text</frontend_type>
                    <sort_order>1</sort_order>
                    <show_in_default>1</show_in_default>
                    <show_in_website>1</show_in_website>
                    <show_in_store>1</show_in_store>
                    <fields>                                                
                        <disallowedcustomergroups translate="label comment">
                            <label>Disallowed Customer Groups</label>
                            <frontend_type>multiselect</frontend_type>
                            <sort_order>120</sort_order>
                            <source_model>adminhtml/system_config_source_customer_group</source_model>
                            <config_path>mymodule/disallowed_customer_groups</config_path>
                            <comment><![CDATA[Press control and select multiple groups]]></comment>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                            <depends><active>1</active></depends>
                        </disallowedcustomergroups>                        
                    </fields>
                </3rdpartyextension>
            </groups>
        </payment>        
    </sections>
</config>

तो आप देख सकते हैं कि मैंने केवल 3 पार्टी एक्सटेंशन के सक्रियण के आधार पर एक टैब निर्दिष्ट किया है। लेकिन मैंने अपने सिस्टम से 3rd पार्टी एक्सटेंशन को पूरी तरह से हटा दिया है, लेकिन फिर भी इसके 3 पार्टी एक्सटेंशन के अन्य विकल्प दिखाई दे रहे हैं? हालांकि इसका प्रदर्शन उन्हें दिखा रहा है कि मैंने अपना कैश क्यों साफ़ किया है?

जवाबों:


14

जहां तक ​​मैं समझता हूं कि आपको क्या चाहिए, आपको <dependsटैग का उपयोग करना चाहिए , उदाहरण app/code/core/Mage/Paypal/etc/system.xml:

<payment_action translate="label">
    <label>Payment Action</label>
    <config_path>payment/paypal_express/payment_action</config_path>
    <frontend_type>select</frontend_type>
    <source_model>paypal/system_config_source_paymentActions_express</source_model>
    <sort_order>30</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <shared>1</shared>
</payment_action>

<authorization_honor_period translate="label comment">
    <label>Authorization Honor Period (days)</label>
    <comment>Specifies what the Authorization Honor Period is on the merchant’s PayPal account. It must mirror the setting in PayPal.</comment>
    <config_path>payment/paypal_express/authorization_honor_period</config_path>
    <frontend_type>text</frontend_type>
    <sort_order>50</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <shared>1</shared>
    <depends><payment_action>Order</payment_action></depends> <!-- see this line -->
</authorization_honor_period>

बहुत बहुत धन्यवाद ... मुझे लगता है कि कोर xml में मिल सकता है, लेकिन वास्तव में यह क्या करता है पता नहीं है।
कमल जोशी

कृपया मेरा दूसरा संपादन देखें ...
कमल जोशी

यदि payment_actionआप चयन करते हैं Order, तो फ़ील्ड authorization_honor_periodदृश्यमान हो जाता है।
Dmytro Zavalkin

1

निर्भरता आपके ऐप / आदि / मॉड्यूल एक्सएमएल में सेट की जा सकती है। Magento जाँच करेगा कि क्या एक्सटेंशन उपलब्ध है।

<?xml version="1.0"?>
<config>
    <modules>
        <Your_Extension>
            <active>true</active>
            <codePool>community</codePool>
            <depends>
                <3thparty_Extension/>
            </depends>
        </Your_Extension>
    </modules>
</config>

या एक्सटेंशन सक्षम है या नहीं यह जांचने के लिए निम्न कोड का उपयोग करें। यह Namespace / Module / Helper / Data.php में एक सहायक विधि बनाकर किया जा सकता है

class Namespace_Module_Helper_Data extends Mage_Core_Helper_Abstract 
{

   public function extensionEnabled()
   {
      return Mage::getStoreConfig('advanced/modules_disable_output/Namespace_Module');
   }
}

आपके उत्तर के लिए धन्यवाद .. क्या होगा अगर मुझे एक्सटेंशन की जांच करनी है या नहीं?
कमल जोशी

हे कमल, आप Mage का उपयोग कर सकते हैं :: getStoreConfig ('उन्नत / मॉड्यूल_डिजेबल_आउटपुट / नेमस्पेस_मॉडल');) मैं अपने awnser में कोड जोड़ दिया है
Sander Mangel

हाँ, यह सच है, लेकिन क्या होगा अगर मैं system.xml में जांचना चाहता हूं, तो आम तौर पर हम ifconigig का उपयोग करके विषय के Layout.xml में देख सकते हैं?
कमल जोशी

तो केवल अपने विन्यास क्षेत्रों को जोड़ने अगर सिस्टम में 3 पार्टी टैब> विन्यास मौजूद है?
सैंडर मंगल

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