如何覆盖 PrestShop 1.7.7 模块类?

问题描述

我想覆盖位于文件中的 PrestaShop 模块 MysqLps_facetedsearch 类:mystore/modules/ps_facetedsearch/src/Adapter/MysqL.PHP

我如何实现这一目标?


编辑:

我想覆盖的类 MysqL文件 mystore/modules/ps_facetedsearch/src/Adapter/MysqL.PHP 中定义。 此类由同一模块的类 Search 使用,并在文件 mystore/modules/ps_facetedsearch/src/Product/Search.PHP 中定义。类 Search 被另一个模块类使用,等等,所以有一个很长的类“链”。

我是否需要扩展所有链接的类,或者我可以以某种方式只覆盖真正需要修改MysqL 类?

解决方法

覆盖模块类

要修改模块类的行为,您必须将修改后的类放在

ROOT/override/modules/MODULENAME/OVERRIDECLASS.php

您必须在下面的位置创建一个 PHP 文件并将其命名为 ps_facetedsearch.php

ROOT/override/modules/ps_facetedsearch/ps_facetedsearch.php

在覆盖类中,您可以添加以下代码。

<?php
    class Ps_FacetedsearchOverride extends Ps_Facetedsearch
    {
        public function getContent()
        {
            return "Hello store owner! this code is brought to you by crezzur.com";
        }
    }
?>

在保存您的 ps_facetedsearch.php 覆盖并清除 Prestashop 缓存后,当您打开模块 ps_facetedsearch 时,您将看到消息“您好店主!此代码是由 crezzur.com 提供给您的”。