Magento1 : 새로운 확장의 시스템 XML에서 종속성을 설정하는 방법


11

타사 확장을 수정하고 새 확장으로 기능을 재정의하고 싶습니다. 그러나 내 주요 관심사는 타사 확장이 Magento 폴더에 활성화되어 있지 않으면 어떻게됩니까? system.xml 또는 config.xml에서 ifconfig를 사용하여 종속성을 설정하고 싶지만 확장명 수준에서 폴더에 확장명이 있는지 확인하는 방법이 확실하지 않습니다. 티아.

편집 : 의존성 답변을 @Sander Mangel에게 감사합니다. 이제 더 명확하게하겠습니다.

app / etc / modules / MyNameSpace_MyModule.xml을 사용하여 종속성을 쉽게 설정할 수 있지만 타사 확장이 시스템에서 제거되면 오류 보고서가 생성되고 "모듈"MyNameSpace_MyModule "에 모듈"3rdPartyExtension "이 필요 하고 추가 실행이 중지 된 이유는 다음과 같습니다. 예외를 생성하지 않고 예외를 생성하지 않고 추가로 실행하려는 경우 magento를 실행하지 않고 3rdpartyextension이 없으면 간단히 MyExtension이 적용되지 않으므로 레이아웃 파일에서 수행 한 것과 같은 기능이 있는지 묻습니다. 참고 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에서 찾을 수는 있지만 정확히 무엇인지 모릅니다.
Kamal Joshi

내 두 번째 편집을 참조하십시오 ...
Kamal Joshi

의 경우 payment_action필드 선택 Order, 필드에 authorization_honor_period표시됩니다.
Dmytro Zavalkin

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>

또는 다음 코드를 사용하여 확장 기능이 활성화되어 있는지 확인하십시오. 네임 스페이스 / 모듈 /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');
   }
}

답변 주셔서 감사합니다 .. 확장 프로그램이 활성화되어 있는지 확인해야합니까?
Kamal Joshi

Kamal, Mage :: getStoreConfig ( 'advanced / modules_disable_output / Namespace_Module');을 사용할 수 있습니다. 나는 내 천막에 코드를 추가했다
Sander Mangel

예, 사실이지만 일반적으로 system.xml을 체크인하려면 ifconfig를 사용하여 테마의 layout.xml을 체크인 할 수 있습니까?
Kamal Joshi

시스템> 구성의 타사 탭이있는 경우 구성 필드 만 추가합니까?
Sander Mangel

선택에 따라 추가 옵션을 제공하려는 행위는 없습니다 ..
Kamal Joshi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.