답변:
모듈 내부의 레이아웃 XML 파일을 사용하여이 작업을 수행 할 수 있습니다. 모듈의 섹션에 config.xml
Magento가 모듈의 레이아웃 XML (경로 :)을로드 할 수 있도록 섹션이 있어야합니다 app/design/frontend/base/default/layout/mymodulename.xml
.
<config>
[...]
<frontend>
[...]
<layout>
<updates>
<mymodulename_layout module="MyModuleName">
<file>mymodulename.xml</file>
</mymodulename_layout>
</updates>
</layout>
</frontend>
이 레이아웃 XML 파일에서 특정 블록을 참조하고 해당 템플릿을 변경할 수 있습니다.
<layout>
<sales_order_view>
<reference name="sales.order.view">
<action method="setTemplate">
<template>mymodulename/sales/order/view.phtml</template>
</action>
</reference>
</sales_order_view>
<sales_order_print>
<reference name="sales.order.print">
<action method="setTemplate">
<template>mymodulename/sales/order/print.phtml</template>
</action>
</reference>
</sales_order_print>
</layout>
모듈 이름 'CustomSales'와 패키지 이름 "Exercise"가 있다고 가정하십시오.
1 단계 : app / etc / modules / Exercise_CustomSales.xml에 모듈 구성 파일 작성
<config>
<modules>
<Exercise_CustomSales>
<active>true</active>
<codePool>local</codePool>
</Exercise_CustomSales>
</modules>
2 단계 : app / code / local / Exercise / CustomSales / etc / config.xml에서 구성 파일 작성
<config>
<modules>
<Exercise_CustomSales>
<version>1.7.0.2</version>
</Exercise_CustomSales>
</modules>
<global>
<blocks>
<customsales>
<class>Exercise_CustomSales_Block</class>
</customsales>
<sales>
<rewrite>
<order_view>Exercise_CustomSales_Block_Sales_Order_View</order_view>
</rewrite>
</sales>
</blocks>
</global>
3 단계 : 실제 view.phtml 파일 인 app / code / local / Exercise / CustomSales / Block / Sales / Order / View.php를 덮어 쓰는 PHP 파일을 만듭니다.
Exercise_CustomSales_Block_Sales_Order_View가 Mage_Sales_Block_Order_View를 확장 함 { 보호 된 함수 _construct () { 부모 :: _ construct (); $ this-> setTemplate ( 'customsales / sales / order / view.phtml'); } }
4 단계 : 레이아웃 폴더 내에 local.xml 파일을 작성해야합니다 (가능한 경로 : app / design / frontend / package / theme / layout). 이것은 print.phtml 용입니다.
예 : (app / design / frontend / rwd / default / layout / local.xml)
<layout>
<sales_order_print>
<reference name="sales.order.print">
<action method="setTemplate">
<template>customsales/sales/order/print.phtml</template>
</action>
</reference>
</sales_order_print>
"app / design / frontend / package / theme / template / customsales / sales / order"내에서 view.phtml 및 print.phtml 파일을 이동하십시오.
마 젠토 캐시를 지 웁니다.
Mage_Sales_Block_Order_View
get의 생성자를 먼저 호출하고 템플릿을 설정 한 다음 setTemplate
내 예제에서 레이아웃 XML에 의해 시작되고 get을 호출하여 사용자 정의 템플릿을 설정합니다. 잠재적으로 충돌을 일으킬 수 있으므로 재 작성을 사용하지 않는 솔루션을 찾고 싶습니다.