magento에서 Code / Core system.xml 파일을 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파일은 마 젠토의 활성 모듈에서 수집됩니다. local모듈 선언 파일에 모듈이 core코드 풀에 속한다고 여전히 표시되어 있기 때문에 폴더 에 폴더를 복사 한다고해서 모듈에있는 것은 아닙니다.
섹션에 새 필드를 추가하거나 일부 필드를 대체하려면 고유 한 모듈을 작성해야합니다.
다음은 섹션에 새 필드를 추가하는 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-시스템-> 구성 파일 필드를 글로벌 레벨 (웹 사이트 및 상점보기 레벨 없음)에서만 사용 가능
하도록 변경하려고한다고 가정하십시오 List Mode. 설정 경로는 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동일한 구성 섹션에서 새 필드를 추가한다고 가정 해 봅시다 . 이제 위의 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> 태그는 필요하지 않습니다.
Jiří Chmiel

2
@ JiříChmiel. 흠 ... 아니야. 모든 모듈 선언 파일 ( app/etc/modules)이로드 된 후 모든 <depends> 태그가 구문 분석되고 모듈 계층이 설정됩니다. 그런 다음 모듈이 순서대로로드됩니다.
Marius

큰 답변 주셔서 감사합니다. 나를 위해 app / etc / modules / Easylife_Catalog.xml의 <depends>는 내가 놓친 것입니다. 그것이 없으면 선언을 수정하기 위해 로컬 system.xml 파일의 변경 사항보다 핵심 system.xml 파일을 선호하는 것 같습니다.
PromInc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.