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

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>

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');
   }
}

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.