local.xml 이외의 로컬 테마 레이아웃 XML 파일이 있습니까?


14

다음 파일을 만들고 편집하여 테마를 작성했습니다.

frontend/mypackage/default/layout/local.xml

상점보기 "site1"이 있고 "mypackage"의 기본 local.xml에서 예외를 만들고자하므로이 파일을 작성했습니다.

frontend/mypackage/site1/layout/local.xml

그러나이 파일을 생성하자마자 Magento는 기본 local.xml 변경 사항을 건너 뜁니다.

Magento에게 기본값에서 local.xml을 사용하도록 지시하고 site1의 local.xml에 변경 사항을 추가하려면 어떻게합니까?


절대 안돼. 죄송합니다. 그런데 좋은 질문입니다.
— user487772

이 똑같은 시나리오에 직면하고 있습니다. 기본 테마에서 local.xml을 확장하지 않고 완전히 대체하지는 않았습니다. 선택한 하위 테마로 완전히 대체하는 것은 너무 나쁩니다.
— Axel

default.xml과 같은 것이 있습니까? 아니면 xml 파일을 가로 지르는 Magento 핵심 코드를 해킹하여 default.xml도 확인할 수 있습니까?
— Gerard Nijboer

답변:


7

Magento 1.9부터 다음 etc/theme.xml과 같이 사용자 정의 레이아웃 업데이트를 추가 할 수 있습니다 .

<theme>
    <layout>
        <updates>
            <my_theme>
                <file>my_theme.xml</file>
            </my_theme>
        </updates>
    </layout>
</theme>

를 사용하는 대신 이와 같은 테마별 레이아웃을 정의 local.xml하면 자식 테마에 다른 업데이트를 쉽게 추가 할 수 있습니다.

불행히도 theme.xml에서도 동일한 문제가 발생하는데 부모 테마의 문제가 아닌 실제 테마의 문제 만 사용됩니다. 그러나 중복이 훨씬 적습니다.

theme.xml자식 테마의 예 :

<theme>
    <layout>
        <updates>
            <my_theme>
                <file>my_theme.xml</file>
            </my_theme>
            <my_child_theme>
                <file>my_child_theme.xml</file>
            </my_child_theme>
        </updates>
    </layout>
</theme>

출처 및 추가 정보 : http://alanstorm.com/magento_infinite_fallback_theme_xml


5

Magento는 다른 local.xml 파일의 local.xml 변경 사항을 병합하지 않습니다. Magento 테마 폴 백이 작동하는 방식은 현재 테마 / 패키지에있는 파일이 선호되고 비슷한 이름의 다른 테마 / 패키지 파일보다 사용되는 것입니다.

이런 방식으로 병합 된 재정의를 만들 수 없습니다. Magento 2에서는 가능하지만 Magento 1.x에서는 불가능합니다.

불행히도 기본값에서 로컬 테마로 복사하고 수정해야합니다.

행운을 빌어 요.


2
+1. 이것은 확실히 프로그래밍 방식으로 달성 할 수는 있지만 노력을 기울일 가치는 없습니다.
— user487772

3

Phil은 절대적으로 맞지만 이론적으로 해결 방법이 있습니다 (그렇지는 않지만).

레이아웃 업데이트를 소개 할 사용자 지정 모듈을 만들 수 있습니다. 그런 다음 모듈에서 상점보기가 필요한 것이 아닌지 확인하고이 레이아웃 업데이트를 제거 할 수 있습니다.

이 접근 방식의 나쁜 점은 상점보기를 하드 코딩한다는 것입니다. 그리고 전반적으로 이것은 예쁘지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.