Magento1:新しい拡張機能のシステムXMLで依存関係を設定する方法


11

サードパーティの拡張機能を変更し、その機能を新しい拡張機能で上書きしたい。しかし、私の主な懸念は、サードパーティの拡張機能が有効になっていないか、Magentoフォルダーに存在しない場合はどうなりますか?system.xmlまたはconfig.xmlのifconfigを使用して依存関係を設定したいのですが、拡張機能レベルで、拡張機能がフォルダーに存在するかどうかを確認する方法がわかりません。TIA。

編集:依存関係の回答を提供してくれた@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>

2番目の編集:Zyavaに感謝します。私はやりたいことをしましたが、何が起こるかを確認するためにトライアル目的でサードパーティの拡張機能を削除した場合、次のように言っています。

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

したがって、サードパーティの拡張機能のアクティブ化に基づいて1つのタブを指定しただけであることがわかります。しかし、サードパーティの拡張機能をシステムから完全に削除しましたが、サードパーティの拡張機能の他のオプションが表示されますか?キャッシュをクリアしたにもかかわらず、なぜ表示されるのですか?

回答:


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

2番目の編集を参照してください...
Kamal Joshi

中ならばpayment_action、あなたが選択したフィールドOrder、フィールドがauthorization_honor_period見えるようになります。
Dmytro Zavalkin 2013

1

依存関係はapp / 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>

または、次のコードを使用して、拡張機能が有効になっているかどうかを確認します。これは、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');
   }
}

回答ありがとうございます。拡張機能が有効になっているかどうかを確認する必要がある場合はどうなりますか?
Kamal Joshi

カマルさん、Mage :: getStoreConfig( 'advanced / modules_disable_output / Namespace_Module');を使用できます。私は日除けにコードを追加しました
Sander Mangel

そうですが、通常のようにsystem.xmlをチェックインしたい場合は、ifconfigを使用してテーマのlayout.xmlをチェックインできますか?
Kamal Joshi

システム>構成にサードパーティのタブが存在する場合にのみ、構成フィールドを追加しますか?
サンダーマンゲル

選択に基づいて追加のオプションを提供する必要はありません。–
Kamal Joshi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.