Magento1: วิธีตั้งค่าการพึ่งพาใน XML ระบบของส่วนขยายใหม่


11

ฉันต้องการแก้ไขส่วนขยายของบุคคลที่สามและต้องการแทนที่ฟังก์ชันการทำงานด้วยส่วนขยายใหม่ แต่ข้อกังวลหลักของฉันคืออะไรหากส่วนขยายของบุคคลที่สามไม่ได้เปิดใช้งานหรือมีอยู่ในโฟลเดอร์ Magento ของฉัน ฉันต้องการตั้งค่าการพึ่งพาโดยใช้ ifconfig ใน system.xml หรือ config.xml แต่ฉันไม่แน่ใจในระดับส่วนขยายว่าจะตรวจสอบว่ามีนามสกุลอยู่ในโฟลเดอร์หรือไม่ TIA

แก้ไข: ขอบคุณ @Sander Mangel สำหรับคำตอบการพึ่งพา ตอนนี้ให้ฉันชัดเจนยิ่งขึ้น

ฉันสามารถตั้งค่าได้อย่างง่ายดายการพึ่งพาการใช้ app / etc / modules / MyNameSpace_MyModule.xml แต่เมื่อขยายงานปาร์ตี้ของฉันที่ 3 ถูกลบออกจากระบบรายงานข้อผิดพลาดถูกสร้างขึ้นและการแสดงของ"โมดูล 'MyNameSpace_MyModule' ต้องโมดูล '3rdPartyExtension'และหยุดการดำเนินการต่อไปทำให้มันมี สร้างข้อยกเว้น แต่ถ้าฉันต้องการดำเนินการเพิ่มเติมโดยไม่สร้างข้อยกเว้นเพียง MyExtension จะไม่มีผลหากไม่มีส่วนที่ 3 ส่วนที่เหลือโดยไม่หยุดวีโอไอพีเพื่อดำเนินการดังนั้นนั่นคือสาเหตุที่ฉันถามว่ามีสิ่งอำนวยความสะดวกเช่นเดียวกับที่เราทำ ตรวจสอบหมายเหตุ ifconfig ที่นี่

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

แก้ไขที่สอง: ขอบคุณ Zyava ฉันทำสิ่งที่ฉันต้องการ แต่จะพูดว่าถ้าฉันลบส่วนขยายของบุคคลที่สามเพื่อจุดประสงค์ในการทดลองใช้เพื่อดูว่าเกิดอะไรขึ้น .. ฉันสร้าง system.xml ของฉันตามด้านล่าง

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

ดังนั้นคุณจะเห็นว่าฉันได้ระบุเพียงแท็บเดียวโดยขึ้นอยู่กับการเปิดใช้งานส่วนขยายของบุคคลที่สาม แต่ฉันได้ลบส่วนขยายของบุคคลที่สามออกจากระบบอย่างสมบูรณ์ แต่ยังคงแสดงตัวเลือกอื่น ๆ ของส่วนขยายของบุคคลที่สามอยู่หรือไม่ ทำไมมันถึงแสดงผลแม้ว่าฉันจะล้างแคชแล้วหรือยัง

คำตอบ:


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>

ขอบคุณมาก ... ฉันพบว่าใน core xml แต่ไม่รู้ว่ามันทำอะไร
Kamal Joshi

โปรดดูการแก้ไขครั้งที่สองของฉัน ...
Kamal Joshi

หากอยู่ในpayment_actionฟิลด์ที่คุณเลือกOrderฟิลด์นั้นauthorization_honor_periodจะปรากฏขึ้น
Dmytro Zavalkin

1

สามารถตั้งค่าการพึ่งพาได้ในแอพ / etc / modules XML ของคุณ 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');
   }
}

ขอบคุณสำหรับคำตอบของคุณ .. ถ้าฉันต้องตรวจสอบส่วนขยายถูกเปิดใช้งานหรือไม่?
Kamal Joshi

สวัสดี Kamal คุณสามารถใช้ Mage :: getStoreConfig ('advanced / modules_disable_output / Namespace_Module'); ฉันเพิ่มรหัสใน awnser ของฉันแล้ว
Sander Mangel

ใช่เป็นเรื่องจริง แต่ถ้าฉันต้องการเช็คอิน system.xml เหมือนปกติเราสามารถเช็คอิน layout.xml ของธีมโดยใช้ ifconfig ได้ไหม
Kamal Joshi

ดังนั้นการเพิ่มฟิลด์การกำหนดค่าของคุณเฉพาะเมื่อมีแท็บบุคคลที่ 3 ในระบบ> การกำหนดค่าอยู่หรือไม่
Sander Mangel

ไม่ต้องการให้ตัวเลือกเพิ่มเติมตามการเลือก ..
Kamal Joshi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.