坚持这一点很久了:(我试图覆盖核心模板文件
应用/设计/前端/碱/默认/模板/持久性/结帐/ onepage / billing.phtml
使用我已成功激活的自定义模块,我的新模块的配置文件位于
应用/代码/本地/ CustomCheckout /结帐的/ etc / config.xml中。
以下是内容
<config>
<modules>
<CustomCheckout_Checkout>
<version>1.0.0</version>
</CustomCheckout_Checkout>
</modules>
<frontend>
<routers>
<checkout>
<args>
<modules>
<CustomCheckout_Checkout before="Mage_Checkout">CustomCheckout_Checkout</CustomCheckout_Checkout>
</modules>
</args>
</checkout>
</routers>
<layout>
<updates>
<checkout>
<file>persistent.xml</file>
</checkout>
</updates>
</layout>
</frontend>
</config>
我正在尝试覆盖 persistent.xml 布局,该布局又调用所述的billing.phtml文件。我将新布局文件放在以下位置
应用/设计/前端/默认/ CustomCheckout /布局/ persistent.xml。
以下是内容
<layout version="0.1.0">
<checkout_onepage_index>
<reference name="checkout.onepage.billing">
<action method="setTemplate">
<template>checkout/onepage/billing.phtml</template>
</action>
</reference>
</checkout_onepage_index>
</layout>
我已将修改后的billing.phtml文件放在
下应用/设计/前端/默认/ CustomCheckout /模板/结帐/ onepage / billing.phtml
但它没有被接受。我正在挠头......任何帮助都表示赞赏。
答案 0 :(得分:4)
希望你现在已经找到了答案,但后人......
这里的问题是“持久”模块已经覆盖了该模板。如果查看persistent.xml布局文件,则会看到以下内容:
<reference name="checkout.onepage.billing">
<action method="setTemplate"><template>persistent/checkout/onepage/billing.phtml</template></action>
<block type="persistent/form_remember" name="persistent.remember.me" template="persistent/remember_me.phtml" />
<block type="core/template" name="persistent.remember.me.tooltip" template="persistent/remember_me_tooltip.phtml" />
</reference>
Magento的默认加载顺序是按字母顺序排列的。因此,由于Persistent模块是“Mage_Persistent”而你的模块是“CustomCheckout_Checkout”,所以最后加载Persistent模块,并且它的覆盖是粘贴的。
有几种解决方案。一种是重命名模块,使其在字母表中的Mage_Persistent之后。
更好的解决方案是使用Magento的依赖功能。在你的模块声明文件(app / etc / modules / CustomCheckout_Checkout.xml)中,你可能有这样的东西:
<?xml version="1.0"?>
<config>
<modules>
<CustomCheckout_Checkout>
<active>true</active>
<codePool>local</codePool>
</CustomCheckout_Checkout>
</modules>
</config>
修改如下所示:
<?xml version="1.0"?>
<config>
<modules>
<CustomCheckout_Checkout>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Persistent />
</depends>
</CustomCheckout_Checkout>
</modules>
</config>
这向Magento表明你的模块“依赖”Mage_Persistent,因此应该在它之后加载。
如果这对您不起作用,另一种方法是在布局xml中使用“删除”节点来摆脱原始的计费块:
<remove name="checkout.onepage.billing" />
然后使用不同的名称重新添加它,就像在checkout.xml中一样。确保从各种布局文件中添加所有必要的块和操作,并使用相同的别名(as =“billing”)。
最后,如果此模块不打算重复使用(更改仅适用于您当前的安装),您只需将phtml文件复制到自定义程序包/主题文件夹中的相同路径即可。
答案 1 :(得分:0)
我是magento开发者。我确实在localhost&amp;找到解决方案我只是创建kinex / links(名称空间/模块)。在此模块中,布局文件包含以下代码:
<checkout_onepage_index>
<reference name="checkout.onepage.billing">
<action method="setTemplate">
<template>kinex/links/billing.phtml</template>
</action>
</reference>
</checkout_onepage_index>
答案 2 :(得分:0)
这很简单,您可以简单地将xml写为:
<checkout_onepage_index>
<reference name="checkout.onepage.billing">
<action method="setTemplate">
<template>your-module/checkout/onepage/billing.phtml</template>
</action>
<block type="persistent/form_remember" name="persistent.remember.me" template="persistent/remember_me.phtml" />
<block type="core/template" name="persistent.remember.me.tooltip" template="persistent/remember_me_tooltip.phtml" />
</reference>
</checkout_onepage_index>
如果结帐页面有错误,则表示缺少结算或shipping.phtml文件。