1

我正在编写一个自定义模块来更改表在 checkout/onepage/onepage.phtml 上的显示我可以在 checkout.xml 中看到它是如何声明的

<block type="checkout/onepage_review" name="checkout.onepage.review" as="review" template="checkout/onepage/review.phtml">
     <block type="checkout/agreements" name="checkout.onepage.agreements" as="agreements" template="checkout/onepage/agreements.phtml"/>
</block>

我想不通的是如何设置 /app/design/frontend/{location}/{theme}/layout/{module}.xml 文件以用新模板覆盖当前的 review.phtml 模板。我的想法是删除当前的并重新加载新的,但这似乎不起作用。

4

1 回答 1

4

我能看到的第一件事是您使用的目录不正确。

它应该是

app/design/frontend/{location}/{theme}/layout/{module}.xml 

代替

app/layout/frontend/{location}/{theme}/layout/{module}.xml 

另外,我不确定您要如何覆盖审阅布局表,但以下内容将用您自己的审阅模板替换:

<checkout_onepage_review>
    <reference name="root">
       <action method="setTemplate"><template>checkout/onepage/your_template.phtml</template></action>
    </reference>
</checkout_onepage_review>

其次,如果您正在创建自定义模块并希望加载布局文件,则必须在模块 config.xml 中声明布局更新。你做过吗?

它看起来类似于:

<?xml version="1.0"?>

<config>
    <modules>
        <Your_Company_Your_Module>
            <version>1.0.0</version>
        </Your_Company_Your_Module>
    </modules>
    <frontend>
        <layout>
            <updates>
                <yourmodule>
                    <file>yourmodule.xml</file>
                </yourmodule>
            </updates>
        </layout>
    </frontend>
</config>

最后,根据您要实现的目标,您可能不需要一个模块来覆盖结帐审查表。

如果模块的唯一目的是简单地覆盖结帐布局,那么使用以下方法之一覆盖布局可能就足够了:

  1. 使用 local.xml

    在主题布局目录中创建一个 local.xml 文件:

    /app/design/frontend/{location}/{theme}/layout/{module}.xml

    并将其用于所有核心布局覆盖。这有很多好处。

  2. 将基本 checkout.xml 布局文件复制到您的主题

    复制 app/design/frontend/base/default/layout/checkout.xml 到 app/design/frontend/{location}/{theme}/layout/checkout.xml

于 2012-06-12T16:25:05.883 回答