2009-06-29 8 views
4

내 자신의 마젠타 모듈을 만들고 핵심 컨트롤러와 모델을 성공적으로 확장했지만 레이아웃 xml 파일을 사용하여 문제가 발생했습니다. 체크 아웃 multishipping 배송 페이지를 업데이 트하고 싶습니다. 지금까지 나는 단지 checkout.xml 파일 전체를 덮어 씌울 수 있었지만, 나는 그 파일을 내 xml 파일에 넣는 것을 선호했다. 모듈에서 프런트 엔드 레이아웃 업데이트

내가 내 모듈 Config.xml의이 있고 tm.xml 파일/응용 프로그램/디자인/프론트 엔드/기본/기본/레이아웃에

<frontend> 
     <layout> 
      <updates> 
        <checkout> 
         <file>tm.xml</file> 
      </checkout> 
     </updates> 
    </layout> 
</frontend> 

감사

답변

3

무엇이다 업데이트 : 아래 텍스트는 app/design 폴더 외부에 템플릿 및 XML 파일을 저장하는 방법을 나타냅니다. 이 답변이 작성된 이후 수년 동안, 이것이 Magento 핵심 팀에게 강력히 권장되지 않았습니다. 개발자는 코드를 사용하여 응용 프로그램 수준에서이를 적용하고 개발 된 새로운 기술을 계속 차단했습니다. 강력하게 낙담하지만, 역사적인 이유로 대답을 남깁니다.

먼저 레이아웃 파일을 모듈의 어딘가에 배치하는 것이 좋습니다. 나는 그 관습이 얼마나 널리 퍼져 있는지 모르겠다. 그러나 그것이 유통의 관점에서 의미가있다. 또한 누군가가 기본 테마를 변경하더라도 레이아웃 재정의가 적용되도록합니다. 당신이 언급 한대로 완전히 젠토 설치에 checkout.xml를 교체하고 이상 이런 일이 XML로,

<file>../../../../../code/local/Packagename/Modulename/layouts/tm.xml</file> 

둘째를 작동해야하고. 너는 이것을 원하지 않는다. 대신 에 Magento의 사용 가능한 업데이트 목록에 레이아웃 업데이트 (해당 XML 파일의 내용)을 추가하려고합니다. 이렇게 대신에 뭔가를하십시오.

<layout> 
    <updates> 
     <my_package_my_module_name>      
      <file>../../../../../code/local/Packagename/Modulename/layouts/tm.xml</file> 
     </my_package_my_module_name> 
    </updates> 
</layout>   

여기에 큰 변화는 우리가 <my_package_my_module_name>로 < 체크 아웃 >을 변경했습니다있다. Magento는 모두을이 섹션에서 지정된 XML을 패키지 레이아웃이라고 부릅니다. 이렇게하면 XML이 checkout.xml의 XML과 함께 살게됩니다. tm.xml에서

, 당신이 설정거야 여기 명심하고, 다중 배송 checkout.xml의 기존 규칙이 여전히 뜻에

<layout version="0.1.0"> 
    <checkout_multishipping> 
     <!-- ... --> 
    </checkout_multishipping> 

    <checkout_multishipping_login> 
     <!-- ... --> 
    </checkout_multishipping_login> 
</layout> 

큰 일을 다 선적에 대한 특정 규칙 있다. 규칙이 수행중인 작업을 무시하려면 < 참조/> 규칙을 작성해야합니다. 이것은 Magento의 레이아웃 시스템이 작동하는 방식입니다. 아직 Intro to Layouts 섹션이 아닌 경우 Magento Designer's Guide을 살펴볼 것을 권합니다.

마지막으로 한 가지 말씀 드리지만 컨트롤러를 무시하고 있다고하셨습니다. 멀티 배송 컨트롤러를 verriding하는 경우 checkout_multishipping > 태그를 < 사용해야합니다. 컨트롤러의 해당 페이지에 대한 액션 컨트롤러/액션 메소드 조합의 이름과 일치하는 태그를 사용해야합니다.

<packagename_modulename_actioncontrollername_action /> 
+0

레이아웃과 마찬가지로 mymodule에서 직접 템플릿 파일을로드 할 수 있습니까? TIA. – Kamal

+0

@ 카말 당신은 할 수 없으며, 그렇게하는 것은 현 시대에 강력히 권장하지 않습니다. –

+0

좋습니다 .. 빠른 응답 주셔서 감사합니다 ... – Kamal

관련 문제