我已经创建了2个自定义模块module_one和module_two。这些模块直接影响ps_product_lang表,因此我对类Product.php进行了覆盖。现在,我可以同时安装两个模块,但是由于覆盖Product.php类的冲突而无法启用我要安装的两个模块中的最后一个。
要使我的模块正常工作,我暂时删除了自定义模块中的替代项,然后直接编辑root_file / override / classes / Product.php。但是我的理想设置是在模块内部包含替代,以便我可以轻松地单独更新它们。我该怎么办?
这是我的目录:
这是我的module_one / override / classes / Product.php代码:
<?php
class Product extends ProductCore {
public $cus_field_1;
public $cus_field_2;
public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null){
self::$definition['fields']['cus_field_1'] = [
'type' => self::TYPE_STRING,
'lang' => true,
'required' => false, 'size' => 255
];
self::$definition['fields']['cus_field_2'] = [
'type' => self::TYPE_STRING,
'lang' => true,
'required' => false, 'size' => 255
];
parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
}
}
这是我的module_two / override / classes / Product.php代码:
<?php
class Product extends ProductCore {
public $cus_field_3;
public $cus_field_4;
public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null){
self::$definition['fields']['cus_field_3'] = [
'type' => self::TYPE_STRING,
'lang' => true,
'required' => false, 'size' => 255
];
self::$definition['fields']['cus_field_4'] = [
'type' => self::TYPE_STRING,
'lang' => true,
'required' => false, 'size' => 255
];
parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
}
}
答案 0 :(得分:1)
我担心您无法通过这种方法达到这一点。由于它们的冲突,Prestashop不鼓励在模块内使用替代。在覆盖过程中,Prestashop只会重写目录中的所有文件,而无法进行拼接。因此,在每次安装新模块后,只有最后一个覆盖可用,这很令人困惑。他们甚至不接受带有替代官方市场模块的模块。 因此,在我看来,正确的方法是创建将不使用替代并不会影响核心的模块。您只需要使用SQL脚本扩展产品表,并通过产品操作挂钩对其进行管理即可。
答案 1 :(得分:0)
您是否要在同一家商店中安装两个模块?