Magento1: Cara mengatur ketergantungan dalam sistem XML ekstensi baru

11

Saya ingin mengubah ekstensi pihak ke-3 dan ingin mengganti fungsinya dengan ekstensi baru. Tetapi perhatian utama saya adalah bagaimana jika ekstensi pihak ke-3 tidak diaktifkan atau ada di folder Magento saya? Saya ingin mengatur ketergantungan menggunakan ifconfig di system.xml atau config.xml tapi saya tidak yakin pada tingkat ekstensi bahwa cara memeriksa apakah ekstensi ada di folder. TIA.

EDIT: Terima kasih kepada @Sander Mangel untuk jawaban ketergantungan. Sekarang biar lebih jelas.

Saya dapat dengan mudah mengatur ketergantungan menggunakan app / etc / modules / MyNameSpace_MyModule.xml tetapi ketika ekstensi pihak ke-3 saya dihapus dari sistem, laporan kesalahan dihasilkan dan menunjukkan "Modul" MyNameSpace_MyModule "memerlukan modul" 3rdPartyExtension " dan menghentikan eksekusi lebih lanjut karena ia memiliki menghasilkan pengecualian tetapi bagaimana jika saya ingin mengeksekusi lebih lanjut tanpa menghasilkan pengecualian? Simply MyExtension tidak akan berlaku jika 3rdpartyextension tidak ada tanpa menghentikan magento untuk dieksekusi. Jadi itu sebabnya saya bertanya apakah ada fasilitas seperti yang kami lakukan pada file layout untuk periksa. CATATAN ifconfig di sini.

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

Sunting Kedua: Terima kasih kepada Zyava. Saya melakukan apa yang saya inginkan tetapi mengatakan Jika saya menghapus ekstensi pihak ke-3 saya untuk tujuan percobaan untuk melihat apa yang terjadi .. Saya membuat system.xml seperti di bawah ini

<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>

Jadi Anda dapat melihat bahwa saya hanya menetapkan satu tab berdasarkan aktivasi ekstensi pihak ke-3. Tetapi saya telah menghapus ekstensi pihak ke-3 sepenuhnya dari sistem saya tetapi masih menunjukkan ekstensi ekstensi pihak ke-3 lainnya? Mengapa ini menunjukkan mereka meskipun saya sudah membersihkan cache saya?

Kamal Joshi
sumber

Jawaban:

14

Sejauh yang saya mengerti apa yang Anda butuhkan, Anda harus menggunakan <dependstag, contoh dari 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>
Dmytro Zavalkin
sumber
Terima kasih banyak ... Saya dapat menemukannya di core xml tetapi tidak tahu persis apa fungsinya.
Kamal Joshi
Silakan lihat hasil edit saya yang kedua ...
Kamal Joshi
Jika dalam payment_actionbidang yang Anda pilih Order, bidang authorization_honor_periodmenjadi terlihat.
Dmytro Zavalkin
1

Ketergantungan dapat diatur dalam aplikasi Anda / etc / modules XML. Magento akan memeriksa apakah ekstensi tersedia.

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

Atau gunakan kode berikut untuk memeriksa apakah ekstensi diaktifkan. Ini dapat dilakukan dengan membuat metode helper di 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');
   }
}
Sander Mangel
sumber
Terima kasih atas jawaban Anda .. Bagaimana jika saya harus memeriksa ekstensi diaktifkan atau tidak?
Kamal Joshi
Hai Kamal, Anda bisa menggunakan Mage :: getStoreConfig ('advanced / modules_disable_output / Namespace_Module') ;. Saya telah menambahkan kode di awnser saya
Sander Mangel
ya itu benar tetapi bagaimana jika saya ingin check-in di system.xml seperti biasanya kita bisa check in di layout.xml tema menggunakan ifconfig?
Kamal Joshi
Jadi hanya menambahkan bidang konfigurasi Anda jika tab pihak ke-3 dalam konfigurasi sistem> ada?
Sander Mangel
Tidak ada actaully yang ingin memberikan opsi lebih lanjut berdasarkan pilihan ..
Kamal Joshi