Magento1: Cómo establecer una dependencia en un sistema XML de nueva extensión

11

Quiero modificar la extensión de terceros y anular su funcionalidad con la nueva extensión. Pero mi principal preocupación es ¿qué pasa si la extensión de terceros no está habilitada o presente en mi carpeta de Magento? Quiero establecer la dependencia usando ifconfig en system.xml o config.xml pero no estoy seguro a nivel de extensión de cómo verificar si la extensión está presente en la carpeta. TIA

EDITAR: Gracias a @Sander Mangel por la respuesta de dependencia. Ahora déjame ser más claro.

Puedo configurar fácilmente la dependencia usando la aplicación / etc / modules / MyNameSpace_MyModule.xml pero cuando mi extensión de terceros se elimina del sistema, se genera un informe de error y se muestra "Módulo" MyNameSpace_MyModule "requiere el módulo" 3rdPartyExtension " y se detiene la ejecución posterior porque tiene generó una excepción, pero ¿qué sucede si deseo ejecutar más sin generar una excepción? Simplemente, MyExtension no tendrá efecto si la tercera parte de la extensión no está presente sin detener a magento para ejecutar. comprobar. NOTA ifconfig aquí.

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

Segunda edición: Gracias a Zyava. Hice lo que quería pero digo: si eliminé mi extensión de terceros con fines de prueba para ver qué sucede.

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

Entonces puede ver que simplemente he especificado una pestaña basada en la activación de la extensión de terceros. ¿Pero he eliminado completamente la extensión de terceros de mi sistema pero todavía muestra otras opciones de extensiones de terceros? ¿Por qué los muestra aunque he borrado mi caché?

Kamal Joshi
fuente

Respuestas:

14

Hasta donde entiendo lo que necesita, debe usar la <dependsetiqueta, ejemplo de 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
fuente
Muchas gracias ... Puedo encontrar eso en core xml pero no sé exactamente qué hace.
Kamal Joshi
Consulte mi segunda edición ...
Kamal Joshi
Si en el payment_actioncampo que selecciona Order, el campo se authorization_honor_periodvuelve visible.
Dmytro Zavalkin
1

Las dependencias se pueden establecer en su aplicación / etc / modules XML. Magento verificará si la extensión está disponible.

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

O use el siguiente código para verificar si una extensión está habilitada. Esto se puede hacer creando un método auxiliar en el espacio de nombres / Módulo / 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
fuente
Gracias por su respuesta. ¿Qué sucede si tengo que verificar que la extensión esté habilitada o no?
Kamal Joshi
Hola Kamal, puedes usar Mage :: getStoreConfig ('advanced / modules_disable_output / Namespace_Module') ;. He agregado el código en mi tolva
Sander Mangel
Sí, eso es cierto, pero ¿qué pasa si deseo registrarme en system.xml como si normalmente pudiéramos ingresar en layout.xml del tema usando ifconfig?
Kamal Joshi
Entonces, ¿solo agrega sus campos de configuración si la pestaña de terceros en el sistema> configuración está presente?
Sander Mangel
Ningún actaully quiere ofrecer más opciones basadas en la selección ..
Kamal Joshi