使用模块prestashop覆盖核心文件

时间:2017-06-02 11:27:13

标签: php prestashop-1.6 prestashop-1.7

其实我是prestashop的新手,

我在这些位置的以下文件中进行了更改

classes/Product.php

src/PrestaShopBundle/Controller/Admin/ProductController.php

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

我创建了一个名为 My Kit 的模块,同时配置了这个模块,所有这些更改都应该有效。如果模块被设置为禁用,这些更改不应该影响前端(我的意思是在管理面板中)

为此,我在override模块中创建了一个 my_kit 文件夹,并将上述所有文件放入此my_kit\override路径中。

my_kit\override\classes/Product.php

my_kit\override\src/PrestaShopBundle/Controller/Admin/ProductController.php

my_kit\override\src/PrestaShopBundle/Resources/views/Admin/Product/form.html.twig

但它对我不起作用:(

我该怎么办呢......

有人帮我解决了这个问题..

3 个答案:

答案 0 :(得分:0)

您可以在主文件安装功能中使用php默认复制功能,如下所示。

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 :(得分:0)

我不确定你将如何解决自定义模块的部分(可能在未配置模块时,您将仅保留定义的覆盖类,并且在配置时,您将在其中进行更改) ...核心文件的更改应该像这样 - 对于Product类:

  1. 在(basefolder)/override/classes/Product.php中创建一个新文件
  2. 定义班级屁股:

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

答案 2 :(得分:0)

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

  

PrestaShop 1.7在其新版本中引入了名称空间的使用   架构,总之,任何具有名称空间的东西都不能   覆盖。但是,仍然可以覆盖旧式体系结构。   但总的来说,我们建议您不要覆盖代码。最好是   扩展它。另外,目前在   基于Symfony的页面(即“产品”页面和“模块”页面)。

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

如果您要覆盖PrestaShop的类和控制器,则可以像以前的版本中一样

http://doc.prestashop.com/display/PS16/Overriding+default+behaviors