Magento:仅覆盖布局xml-File的一部分

时间:2012-05-04 09:53:56

标签: magento layout

我只想更改文件checkout.xml的一部分(此文件位于核心布局文件夹中)。我创建自己的扩展并链接到我的config.xml中我自己的layout-xml-File。

<layout>

  <updates>
    <checkout>
     <file>mymodule_checkout.xml</file>
    </checkout>
  </updates>
</layout>

当我复制整个文件checkout.xml并将其保存为mymodule_checkout.xml时,没有问题。但我只想在

之间覆盖这个大文件的一小部分
<reference name="content">

</reference>

在这种情况下,当我只写我需要的部分时,magento只用这个部分读取我的文件。所以magento没有得到原始checkout.xml的剩余部分。

是否可以仅更改核心布局xml-File的一部分而不复制整个文件或更改核心。

mymodule.xml的代码如下所示:

<layout version="0.1.0">

<checkout_onepage_index translate="label">

    <reference name="content">
        <block type="checkout/onepage" name="checkout.onepage" template="checkout/onepage.phtml">
            <block type="checkout/onepage_login" name="checkout.onepage.login" as="login" template="checkout/onepage/login.phtml">
                <block type="page/html_wrapper" name="checkout.onepage.login.before" as="login_before" translate="label">
                    <label>Login/Registration Before</label>
                    <action method="setMayBeInvisible">
                        <value>1</value>
                    </action>
                </block>
                <block type="checkout/onepage_billing" name="checkout.onepage.billing" as="billing" template="checkout/onepage/billing.phtml"/>
                <block type="checkout/onepage_shipping" name="checkout.onepage.shipping" as="shipping" template="checkout/onepage/shipping.phtml"/>
            </block>
            <block type="checkout/onepage_shipping_method" name="checkout.onepage.shipping_method" as="shipping_method" template="checkout/onepage/shipping_method.phtml">
                <block type="checkout/onepage_shipping_method_available" name="checkout.onepage.shipping_method.available" as="available" template="checkout/onepage/shipping_method/available.phtml"/>
                <block type="checkout/onepage_shipping_method_additional" name="checkout.onepage.shipping_method.additional" as="additional" template="checkout/onepage/shipping_method/additional.phtml"/>
            </block>
            <block type="checkout/onepage_payment" name="checkout.onepage.payment" as="payment" template="checkout/onepage/payment.phtml">
                <block type="checkout/onepage_payment_methods" name="checkout.payment.methods" as="methods" template="checkout/onepage/payment/methods.phtml">
                    <action method="setMethodFormTemplate">
                        <method>purchaseorder</method>
                        <template>payment/form/purchaseorder.phtml</template>
                    </action>
                </block>
            </block>
            <block type="checkout/onepage_review" name="checkout.onepage.review" as="review" template="checkout/onepage/review.phtml"/>
        </block>
    </reference>
</checkout_onepage_index>
</layout>

这就是我需要的部分。在这种情况下,magento只使用此代码而不是核心xml文件的剩余代码。

1 个答案:

答案 0 :(得分:0)

当然,是的。 Magento将所有布局文件合并为一个,包括来自后备主题的文件。处理后所有文件仍然是相关的,所有文件都是用于生成布局的文件,只要你的xml格式正确,就可以覆盖任何.xml文件中的任何部分 - 即只是因为它被称为page.xml没有意味着你不能在foobarbaz.xml中覆盖它。

你的问题很可能在于你的问题,你可以发布mymodule_checkout.xml的内容,这样我就可以弄清楚你想要做什么,并希望能为你提供一个有效的替代品吗?

相关问题