使用模块prestashop覆盖核心文件



实际上我是Prestashop的新手,

,我在这些位置有以下文件的更改

classes/Product.php

src/PrestaShopBundle/Controller/Admin/ProductController.php

src/PrestaShopBundle/Resources/views/Admin/Product/form.html.twig

我创建了一个名为的模块,我的套件在配置此模块时,所有这些更改都应起作用。如果设置了模块,则这些更改不应在前端影响(我的意思是在管理面板中(

为此,我已经创建了 override my_kit模块中的文件夹,并将上述所有文件放入此my_kitoverride路径中。

喜欢

my_kitoverrideclasses/Product.php

my_kitoverridesrc/PrestaShopBundle/Controller/Admin/ProductController.php

my_kitoverridesrc/PrestaShopBundle/Resources/views/Admin/Product/form.html.twig

,但对我不起作用:(

我应该如何做这个..

有人帮助我。

您可以在主文件安装功能中使用PHP默认 copy 函数如下。

public function install()
{
copy(_PS_ROOT_DIR_."/modules/your module name/classes/Product.php",_PS_ROOT_DIR_."/override/classes/Product.php");
unlink(_PS_ROOT_DIR_."/cache/class_index.php");//because you need to delete this file after override
//Do same like this all other file.

}

谢谢,

我不确定如何使用自定义模块在零件周围工作(也许是在未配置模块时,您将仅定义了覆盖类,以及它配置了,您将把更改放在那里(...仍然应该像这样完成核心文件的更改 - 对于产品类:

  1. 在(BaseFolder(/override/classes/product.php
  2. 中制作一个新文件
  3. 定义类屁股:

    class Product extends ProductCore
    
  4. 进行更改。(覆盖功能,或添加新功能(

您不能从 src文件夹中覆盖类

Prestashop 1.7引入了名称空间的使用 架构,简而言之,任何具有名称空间的事物 覆盖。不过,遗产架构仍然可以被覆盖。 但总的来说,我们建议不要覆盖代码。最好 扩展它。此外,目前禁止覆盖 基于Symfony的页面(即产品页面和模块页面(。

http://build.prestashop.com/news/prestashop-1-7-faq/#is-there-any-any-any-change-planned-to-the-the-override-system

如果要覆盖Prestashop的类和控制器,则可以像以前的版本一样进行

http://doc.prestashop.com/display/ps16/overriding Default behaviors

最新更新