Magento (1.7.0.2) のチェックアウト プロセスでの割引コードの省略 (狂気!) に対応するために、同じものを追加するための小さな拡張機能をインストールしました。それは問題なく動作しますが、個々のブロックを強化するための Magento の限定的なサポートにより、拡張機能はまったく新しいcheckout/onepage/progress.phtmlファイルを提供します。このファイルは、テーマ (パッケージ) が提供する進行状況ボックスとはまったく異なる方法で実装されます。これに対処するには、拡張機能の one-page progress.phtml をテーマの progress.phtml ファイルとマージし、代わりにそれを使用する必要があります。
しかし、それは問題ではありません!問題は、ストアがテーマの progress.phtml ファイルではなく、拡張機能の progress.phtml ファイルを使用するようになったのはなぜですか?
私は Magento の超複雑なテンプレートを理解できるようになったと思っていましたが、明らかにそうではありません! これを修正するには、テーマの progress.phtml に戻す必要があります。詳細に...
拡張機能は frontend/base/default にインストールされ、次を指定するレイアウト XML が含まれます。
<layout>
<checkout_onepage_index translate="label">
<reference name="checkout.onepage">
<block type="greenacorn_checkoutcoupon/onepage_coupon" name="greenacorn_checkoutcoupon.onepage.coupon" as="coupon" template="greenacorn/checkoutcoupon/onepage/coupon.phtml"/>
</reference>
<reference name="checkout.progress">
<action method='setTemplate'>
<template>greenacorn/checkoutcoupon/onepage/progress.phtml</template>
</action>
</reference>
</checkout_onepage_index>
<checkout_onepage_progress>
<reference name='root'>
<action method='setTemplate'>
<template>greenacorn/checkoutcoupon/onepage/progress.phtml</template>
</action>
</reference>
</checkout_onepage_progress>
</layout>
開発者が明らかに進行状況テンプレートを 2 回設定した理由を説明できる人はいますか?
今、私のテーマは frontend/[theme]/default/layout/checkout.xml で次のように指定されています
<checkout_onepage_progress>
<!-- Mage_Checkout -->
<remove name="right"/>
<remove name="left"/>
<block type="checkout/onepage_progress" name="root" output="toHtml" template="checkout/onepage/progress.phtml">
<block type="checkout/onepage_payment_info" name="payment_info">
<action method="setInfoTemplate"><method></method><template></template></action>
</block>
</block>
</checkout_onepage_progress>
私の理解では、構成されたテーマで定義されたものは、フロントエンド/ベースで定義されたものよりも優先されるフロントエンド/デフォルトで定義されたものよりも優先されます。では、テーマで定義されたテンプレートよりも拡張機能で定義されたテンプレートがどのように優先されるのでしょうか?