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

11

Я хочу изменить стороннее расширение и переопределить его функциональность новым расширением. Но моя главная проблема в том, что, если стороннее расширение не включено или отсутствует в моей папке Magento? Я хочу установить зависимость, используя ifconfig в system.xml или config.xml, но я не уверен на уровне расширения, как проверить, присутствует ли расширение в папке. ТИА.

РЕДАКТИРОВАТЬ: Спасибо @Sander Mangel за ответ зависимости. Теперь позвольте мне быть более ясным.

Я легко могу установить зависимость, используя app / etc / modules / MyNameSpace_MyModule.xml, но когда мое стороннее расширение удаляется из системы, генерируется отчет об ошибке, и для его показа «Module» MyNameSpace_MyModule »требуется модуль« 3rdPartyExtension » и прекращается дальнейшее выполнение, поскольку оно имеет сгенерированное исключение, но что, если я захочу выполнить дальше без генерации исключения? Просто MyExtension не вступит в силу, если не будет 3-й части расширения без остановки magento для выполнения. Поэтому я спрашиваю, есть ли какие-либо средства, которые мы использовали для файлов макета для проверьте. ПРИМЕЧАНИЕ 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>
Дмитрий Завалкин
источник
Большое вам спасибо ... Я могу найти это в ядре XML, но не знаю точно, что он делает.
Камаль Джоши
Пожалуйста, ознакомьтесь с моим вторым редактированием ...
Камаль Джоши
Если в payment_actionполе вы выбираете Order, поле authorization_honor_periodстановится видимым.
Дмитрий Завалкин
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>

Или используйте следующий код, чтобы проверить, включено ли расширение. Это можно сделать, создав вспомогательный метод в пространстве имен / 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 ('advanced / modules_disable_output / Namespace_Module') ;. Я добавил код в свой awnser
Sander Mangel
да, это правда, но что, если я хочу проверить в system.xml, как обычно, мы можем проверить в layout.xml темы, используя ifconfig?
Камаль Джоши
Таким образом, только добавление ваших полей конфигурации, если присутствует вкладка 3-й стороны в системе> конфигурации?
Сандер Мангел
Никто на самом деле не хочет предоставлять дополнительные варианты, основанные на выборе ..
Камаль Джоши