回答:
これは、モジュール内のレイアウト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ファイルを上書きするphpファイルを作成しますapp / code / local / Exercise / CustomSales / Block / Sales / Order / View.php
クラスExercise_CustomSales_Block_Sales_Order_View extends Mage_Sales_Block_Order_View { 保護された関数_construct() { parent :: _ 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ファイルを移動します。
magentoキャッシュをクリアします。
Mage_Sales_Block_Order_View
最初にgetのコンストラクターが呼び出されてテンプレートが設定setTemplate
され、次に、私の例のレイアウトXMLによって呼び出されてgetが呼び出され、カスタムテンプレートが設定されます。競合が発生する可能性があるため、リライトを使用しないソリューションを求めています。