Prestashop-现有prestashop模块中的替代功能

| 我想更改现有的prestashop模块,而不复制它并创建一个新模块。我知道可以在prestashop中覆盖.tpl文件,但是是否可以对php类做同样的事情?例如,我想更改blockcart,以便可以将其挂在顶部。由于原始版本没有该挂钩,因此我需要更改install()函数!我无法更改原始源文件(不是个好主意...)文件,我需要通过继承blockcart模块来覆盖install()函数。是否可以这样做?在哪里可以找到示例?     
已邀请:
我对FrontController类使用了自己的重写,以允许在tpl文件中的任意点显示模块输出-这意味着该模块不需要支持特定的钩子。它是通过smarty插件实现的,因此您可以使用例如:
{plugin module=\'blockcart\' hook=\'rightColumn\'}
上面的内容将强制模块输出,如果钩到插入了上面的标签的右列(可以在任何tpl文件中的任何位置),它将输出显示的内容。您可以从右列“摘机”该模块,以使其仅显示使用此技术所需的位置。我已经在生产现场成功使用了它。 您可以在以下位置找到一系列描述其工作方式(带有所需代码)的文章: Prestashop 1.4插件     
在Prestashop 1.4中,您可以覆盖核心类和模块模板 今天,这不可能覆盖模块php文件,但我们正在研究中。     
从PrestaShop的1.6.0.11版本开始,有一项新功能允许开发人员覆盖模块的实例类。 通过扩展模块的实例类来覆盖它 要覆盖模块的实例类,您必须对其进行扩展,为扩展的类赋予相同的名称,并添加Override后缀:
<?php
if (!defined(\'_PS_VERSION_\'))
    exit;
class BlockUserInfoOverride extends BlockUserInfo
{
    public function hookDisplayNav($params)
    {
        return \'<div class=\"header_user_info\"><a>Test</a></div>\';
        // return $this->display(__FILE__, \'nav.tpl\');
    }
}
资料来源:http://build.prestashop.com/howtos/module/how-to-override-modules/     
在override \\ modules \\ blockcart \\ blockcart.php中(如果尚不存在,则创建它)
<?php 
    class BlockCartOverride extends BlockCart
    {
        public function hookDisplayTop($params)
        {
            return parent::hookTop($params);
        }
    }
?>
像这样,您可以覆盖任何模块以使其可挂在任何默认或自定义钩子上。 不要忘记删除cache / class_index.php以使覆盖生效:)     

要回复问题请先登录注册