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

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>

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

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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.