如何通过Magento中自定义模块的config.xml更改模板?

时间:2012-08-18 17:36:56

标签: xml magento module

我模块的config.xml的内容。

我想通过此模块更改onepage模板文件。

如果我在onepage.xml中更改代码,它是有效的,但我想用我的模块进行此操作。

这段代码怎么了?

<config>
    <modules>
        <Mynamespace_Mymodule>
            <version>1.0</version> 
        </Mynamespace_Mymodule>
    </modules>
    <frontend>
        <layout>
            <checkout_onepage_index>
                <reference name="checkout.onepage">
                    <action method="setTemplate"><template>mynamespace/mymodule/onepage.phtml</template></action>
                </reference>
            </checkout_onepage_index>
        </layout>
    </frontend>
</config>

1 个答案:

答案 0 :(得分:1)

您无法从config.xml

调用布局

你说的是:我在onepage.xml中更改了代码 - &gt;看起来你的意思是checkout.xml 这是定义的术语。我们可能有不同的模块定义。

假设您在app/code/local/[Mynamespace]/[Mymodule]中有模块 您的[Mymodule]正在呼叫mymodule.xml 你说它是从你的模块调用的吗?

1)如果是,那么您可以在config.xml

中使用此代码
<config>
    <modules>
        <Mynamespace_Mymodule>
            <version>1.0</version> 
        </Mynamespace_Mymodule>
    </modules>
    <frontend>
        <layout>
            <updates>
                <mymodule>
                    <file>mymodule.xml</file>
                </mymodule>
            </updates>
        </layout>
    </frontend>
</config>

该代码将调用名为mymodule.xml的布局 然后在app/design/frontend/[base/default]/[default/yourtheme]/layout/mymodule.xml

中创建布局文件
<?xml version="1.0"?>
<layout version="0.1.0">
    <checkout_onepage_index>
        <reference name="checkout.onepage">
            <action method="setTemplate"><template>mynamespace/mymodule/onepage.phtml</template></action>
        </reference>
    </checkout_onepage_index>
</layout>

2)如果不是 - >您对模块的定义只是app/code/local/[Mynamespace]/[Mymodule]下的文件,那么您需要重写Onepage的块

config.xml

<config>
    <modules>
        <Mynamespace_Mymodule>
            <version>1.0</version> 
        </Mynamespace_Mymodule>
    </modules>
    <global>
        <blocks>
            <checkout>
                <rewrite>
                    <onepage>Mynamespace_Mymodule_Block_Checkout_Onepage</onepage>
                </rewrite>
            </checkout>
        </blocks>
    </global>
</config>

使用该配置,Mage_Checkout_Block_Onepage将由Mynamespace_Mymodule_Block_Checkout_Onepage重写(只要您保持目录结构匹配,就可以更改名称。)

例如,您的文件将被放入:app/code/local/[Mynamespace]/[Mymodule]/Block/Checkout/Onepage.php

最后,您的app/code/local/[Mynamespace]/[Mymodule]/Block/Checkout/Onepage.php将是这样的:

class Mynamespace_Mymodule_Block_Checkout_Onepage extends Mage_Checkout_Block_Onepage
{
    public function __construct()
    {
        parent::__construct();
        $this->setTemplate('mynamespace/mymodule/onepage.phtml');
    }
}