Magento1: Як встановити залежність у системному XML нового розширення


11

Я хочу змінити розширення сторонніх розробників і хочу змінити його функціональність новим розширенням. Але моя головна стурбованість полягає в тому, що якщо розширення сторонніх розробників не ввімкнено або присутнє в моїй папці Magento? Я хочу встановити залежність, використовуючи ifconfig в system.xml або config.xml, але на рівні розширення я не впевнений, як перевірити наявність розширення в папці. ТІА.

EDIT: Дякуємо @Sander Mangel за відповідь на залежність. Тепер дозвольте мені бути більш зрозумілим.

Я можу легко встановити залежність за допомогою app / etc / module / MyNameSpace_MyModule.xml, але коли моє розширення третьої сторони видалено із системи, генерується звіт про помилку та його показ "Модуль" MyNameSpace_MyModule "вимагає модуля" 3rdPartyExtension " і зупиняє подальше виконання, оскільки це має згенерований виняток, але що робити, якщо я хочу виконати далі, не створюючи виняток? Просто MyExtension не набере чинності, якщо 3rdpartyextension відсутня, не зупиняючи виконання magento. Тому я запитую, чи є така функція, як ми це робили для файлів компонування для ПРИМІТКА. ifconfig тут.

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

Друга редакція: Дякую Зяві. Я зробив те, що хочу, але скажу: Якщо я видалив розширення третьої сторони для пробної мети, щоб побачити, що станеться .. Я створив свою 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

Якщо payment_actionви вибрали Orderполе, поле authorization_honor_periodстає видимим.
Дмитро Завалкін

1

Залежності можна встановити у вашому XML-програмі / тощо / модулях. Magento перевірить, чи доступне розширення.

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

Або скористайтеся наступним кодом, щоб перевірити, чи ввімкнено розширення. Це можна зробити, створивши допоміжний метод у просторі імен / модуля / помічника / 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 ('Advanced / module_disable_output / Namespace_Module') ;. Я додав код у своєму тендері
Sander Mangel

так, це правда, але що, якби я хотів перевірити system.xml, як зазвичай, ми можемо перевірити layout.xml теми за допомогою ifconfig?
Камаль Джоші

Отже, лише додавання ваших конфігураційних полів, якщо присутня вкладка третьої сторони в системі> конфігурація?
Sander Mangel

Ніхто не хоче надавати подальші варіанти на основі вибору ..
Kamal Joshi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.