为了迎合 Magento (1.7.0.2) 在结帐过程中省略折扣代码(疯狂!),我安装了一个小的扩展来添加相同的。这很好用,但由于 Magento 对增强单个块的支持有限,该扩展提供了一个全新的checkout/onepage/progress.phtml文件,该文件的实现与主题(包)提供的进度框完全不同。因此,为了解决这个问题,我必须将扩展单页 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>
谁能解释为什么开发人员显然设置了两次进度模板?
现在我的主题在 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>
我的理解是,在配置的主题中定义的东西优先于在前端/默认中定义的东西,它优先于在前端/基础中定义的东西。那么扩展中定义的模板如何优先于主题中定义的模板呢?