0

我正在尝试覆盖 Mage_Customer_Block_Form_Login 中的函数 _prepareLayout() 以在页面上有登录区域(即每个页面)时停止使用“客户登录”填充标题。

我在 app/code/local/My/Module/etc/config.xml 中的 config.xml:

<?xml version="1.0"?>
<config>
    <modules>
        <My_Module>
            <version>0.1.0</version>
        </My_Module>
    </modules>
    <global>
        <blocks>
            <customer>
                <rewrite>
                    <form_login>My_Module_Block_Customer_Form_Login</form_login>
                </rewrite>
            </customer>
        </blocks>
    </global>
</config>

我在 app/etc/modules 中的 My_Module.xml:

<?xml version="1.0"?>
<config>
    <modules>
        <My_Module>
            <active>true</active>
            <codePool>local</codePool>
        </My_Module>
    </modules>
</config> 

我在 app/code/local/My/Module/Customer/Form/Login.php 中的 Login.php

class My_Module_Block_Customer_Form_Login extends Mage_Customer_Block_Form_Login
{

    protected function _prepareLayout()
    {
        return parent::_prepareLayout();
    }

}

我已经尝试了所有我能想到的排列方式,但标题仍然在有登录表单且没有生成错误日志的页面上显示“客户登录”。当我将核心文件中的功能更改为上述功能时,它可以工作,所以我不知道为什么在覆盖类时它不起作用?

任何想法都非常欢迎!

非常感谢

4

1 回答 1

2

您可以使用下面的代码,它摆脱了parent, elseparent::_prepareLayout()当您的类继承时调用,不会Mage_Customer_Block_Form_Login改变原始行为

protected function _prepareLayout()
{
    return Mage_Core_Block_Template::_prepareLayout();
}
于 2013-07-16T13:08:11.790 回答