我想在产品中进行自定义修改

时间:2019-09-11 07:53:31

标签: php prestashop prestashop-1.7

我想在产品中进行自定义修改。我必须从自定义表中获取信息,并将其添加到产品列表中的阵列产品中。我想在所有类别等中都使用此字段。有人知道哪个类负责此类修改吗?

Prestashop 1.7.4

2 个答案:

答案 0 :(得分:1)

简单的方法是覆盖类“产品”和“类别”。

网络上有很多示例,因此以下内容并非全部代码源,仅是在产品列表页面上显示自定义字段的说明。

带有数据库字段的示例,用于将数据存储在您创建的新表中:  "id", "content"

使用SQL查询创建方法,该方法按product_id加载内容并将其添加到调用product_list页面的类别控制器中:

$sql = 'SELECT content FROM '._DB_PREFIX_.'new_table WHERE id='.(int)$my_content_id ;
$content = Db::getInstance()->getValue($sql);

覆盖产品类别的示例:

class Product extends ProductCore {

    public $my_content_id;


    public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, \Context $context = null) {



        self::$definition['fields']['my_content_id'] = [
            'type' => self::TYPE_STRING,
            'required' => false, 'size' => 255
        ];

        parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
    }
}

要在产品列表页面中显示您的价值:

在模板产品列表中,调用您的变量:

<div class="my_content_by_product_id">{$product.my_content_by_product_id}</div>

一些灵感:

在模板文件中调用新文件:

https://www.prestashop.com/forums/topic/609377-insert-custom-field-in-product-listtpl/

用于在产品列表块内显示数据的模块:

https://www.prestashop.com/forums/topic/951320-module-to-display-data-inside-the-product-list-block/

这是在Products中添加字段的模块示例:

Add field in product Prestashop 1.7

您还可以按照以下步骤在管理中修改产品表单:

https://www.prestashop.com/forums/topic/606651-prestashop-17-override-of-admin-product/#comment-2549505

答案 1 :(得分:0)

对我来说,最好的实现是创建一个满足您要求的模块。您可以使用钩子actionProductFormModifier(如果要修改产品表单的默认部分)或displayAdminProductsExtra(如果可以使用模块表单来处理)将新字段添加到该类和actionGetProductPropertiesAfter在输出之前修改产品数据数组。完成所有修改后,您只需在任何模板中使用{$ product.your_new_field}即可获取信息。尽管该方法看起来很复杂,但Prestashop开发人员还是鼓励使用这种方法,因为他们不鼓励使用类重写