Magento1: Jak ustawić zależność w systemie XML nowego rozszerzenia

11

Chcę zmodyfikować rozszerzenie innej firmy i zastąpić jego funkcjonalność nowym rozszerzeniem. Ale moim głównym problemem jest to, czy rozszerzenie trzeciej strony nie jest włączone lub obecne w moim folderze Magento? Chcę ustawić zależność za pomocą ifconfig w pliku system.xml lub config.xml, ale nie jestem pewien na poziomie rozszerzenia, jak sprawdzić, czy rozszerzenie jest obecne w folderze. TIA

EDYCJA: Dzięki @Sander Mangel za odpowiedź zależności. Teraz pozwól mi być bardziej zrozumiały.

Mogę łatwo ustawić zależność za pomocą aplikacji / etc / modules / MyNameSpace_MyModule.xml, ale gdy moje rozszerzenie innej firmy zostanie usunięte z systemu, generowany jest raport o błędzie, a jego komunikat „Moduł” MyNameSpace_MyModule ”wymaga modułu„ 3rdPartyExtension ” i zatrzymał dalsze wykonywanie, ponieważ wygenerowany wyjątek, ale co jeśli chcę wykonać dalej bez generowania wyjątku? Po prostu MyExtension nie zadziała, jeśli nie będzie trzeciego rozszerzenia partycji bez zatrzymania wykonywania programu magento. Dlatego pytam, czy istnieje jakakolwiek ułatwienie, jak w przypadku plików układu sprawdź UWAGA UWAGA tutaj.

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

Druga edycja: Dzięki Zyava. Zrobiłem, co chcę, ale powiedz, że jeśli usunąłem rozszerzenie innej firmy w celu przetestowania, aby zobaczyć, co się stanie .. Utworzyłem system.xml jak poniżej

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

Możesz więc zobaczyć, że po prostu określiłem jedną kartę na podstawie aktywacji rozszerzenia innej firmy. Ale usunąłem rozszerzenie trzeciej strony całkowicie z mojego systemu, ale nadal wyświetla inne opcje rozszerzeń innych firm? Dlaczego pokazuje je, mimo że wyczyściłem pamięć podręczną?

Kamal Joshi
źródło

Odpowiedzi:

14

O ile rozumiem, czego potrzebujesz, powinieneś użyć <dependstagu, na przykład z 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
źródło
Dziękuję bardzo ... Mogę to znaleźć w rdzeniu XML, ale nie wiem dokładnie, co to robi.
Kamal Joshi
Proszę odnieść się do mojej drugiej edycji ...
Kamal Joshi,
Jeśli payment_actionwybierzesz Orderpole, pole stanie authorization_honor_periodsię widoczne.
Dmytro Zavalkin
1

Zależności można ustawić w pliku XML aplikacji / etc / modułów. Magento sprawdzi, czy rozszerzenie jest dostępne.

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

Lub użyj następującego kodu, aby sprawdzić, czy rozszerzenie jest włączone. Można to zrobić, tworząc metodę pomocniczą w 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');
   }
}
Sander Mangel
źródło
Dziękujemy za odpowiedź. Co zrobić, jeśli muszę sprawdzić, czy rozszerzenie jest włączone, czy nie?
Kamal Joshi,
Hej Kamal, możesz użyć Mage :: getStoreConfig ('advanced / modules_disable_output / Namespace_Module') ;. Dodałem kod do mojego awnsera
Sander Mangel
tak, to prawda, ale co jeśli chcę zaewidencjonować plik system.xml, tak jak zwykle możemy sprawdzić plik layout.xml przy użyciu ifconfig?
Kamal Joshi
Więc dodawanie pól konfiguracji tylko wtedy, gdy jest dostępna karta trzeciej strony w systemie> konfiguracja?
Sander Mangel
Żaden nie chce udostępniać dalszych opcji w oparciu o wybór.
Kamal Joshi,