Code / Core system.xmlファイルをmagentoのCode / localにコピーする方法


18

管理パネルでいくつかのカスタマイズが必要だったので、変更を加えました

   1) "app/code/core/../system.xml file its working fine. 

しかし、コアフォルダー内のコードを変更したくありません。バージョンが変わったため。

だから私はそのファイルをローカルフォルダに移動したいのですが、動作しません

 2) "app/code/local/../system.xml" files is not working

誰でもsystem.xmlファイルをオーバーライドする方法を教えてもらえますか?

ありがとう

回答:


28

system.xmlファイルについては、クラスファイルの場合のようには機能しません。system.xmlファイルは、Magentoののアクティブモジュールから収集されます。localモジュール宣言ファイルは、モジュールがcoreコードプールに属していることを示しているため、フォルダー内の1つをコピーするだけでは、モジュール内にあることを意味しません。
セクションに新しいフィールドを追加する場合、またはフィールドの一部をオーバーライドする場合は、独自のモジュールを作成する必要があります。
セクションに新しいフィールドを追加するCatalog->Frontend方法と、同じセクションのフィールドを上書きする方法の例を次に示します。
あなたのモジュールが呼ばれてEasylife_Catalogいるとしましょう。
次のファイルが必要です
app/etc/modules/Easylife_Catalog.xml。-宣言ファイル

<?xml version="1.0"?>
<config>
    <modules>
        <Easylife_Catalog>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Catalog />
            </depends>
        </Easylife_Catalog>
    </modules>
</config>

app/code/local/Easylife/Catalog/etc/config.xml -構成ファイル

<?xml version="1.0"?>
<config>
    <modules>
        <Easylife_Catalog>
            <version>0.0.1</version>
        </Easylife_Catalog>
    </modules>
</config>

app/etc/local/Easylife/Catalog/etc/system.xml-system-> configuration file フィールドをグローバルレベルでのみ使用可能
に変更したいとしますList Mode(Webサイトとストアビューレベルはありません)。設定パスはcatalog/frontend/list_modeです。次に、system.xmlこのようになります:

<?xml version="1.0"?>
<config>
    <sections>
        <catalog><!-- first part of the path -->
            <groups>
                <frontend><!-- second part of the path -->
                    <fields>
                        <list_mode><!-- third part of the path -->
                            <show_in_website>0</show_in_website><!-- this will override the core value -->
                            <show_in_store>0</show_in_store><!-- this will override the core value -->
                        </list_mode>
                    </fields>
                </frontend>
            </groups>
        </catalog>
    </sections>
</config>

ここcustomで、同じconfigセクションで呼び出される新しいフィールドを追加するとします。上のxmlは次のようになります

<?xml version="1.0"?>
<config>
    <sections>
        <catalog><!-- first part of the path -->
            <groups>
                <frontend><!-- second part of the path -->
                    <fields>
                        <list_mode><!-- third part of the path -->
                            <show_in_website>0</show_in_website><!-- this will override the core value -->
                            <show_in_store>0</show_in_store><!-- this will override the core value -->
                        </list_mode>
                        <custom translate="label"><!-- your new field -->
                            <label>Custom</label>
                            <frontend_type>text</frontend_type>
                            <sort_order>1000</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                        </custom>
                    </fields>
                </frontend>
            </groups>
        </catalog>
    </sections>
</config>

この方法を使用して構成からフィールドを削除する方法があるかどうかはわかりません。探しましたが、何も見つかりませんでした。


ありがとう。ローカルモジュールは常にコアモジュールの後にロードされるため、タグ<depends>は必要ありません。
ジージークミエル

2
@JiříChmiel。エム...いいえ、そうではありません。すべてのモジュール宣言ファイル(app/etc/modules)がロードされ、すべての<depends> タグが解析されてモジュールの階層が確立されます。その後、モジュールはその順序でロードされます。
マリウス

すばらしい回答をありがとう。私にとっては、app / etc / modules / Easylife_Catalog.xmlの<depends>が欠けていました。それがなければ、宣言を変更するために、ローカルのsystem.xmlファイルの変更よりもコアのsystem.xmlファイルを優先するように思われました。
PromInc
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.