我想在产品中进行自定义修改。我必须从自定义表中获取信息,并将其添加到产品列表中的阵列产品中。我想在所有类别等中都使用此字段。有人知道哪个类负责此类修改吗?
Prestashop 1.7.4
答案 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
您还可以按照以下步骤在管理中修改产品表单:
答案 1 :(得分:0)
对我来说,最好的实现是创建一个满足您要求的模块。您可以使用钩子actionProductFormModifier
(如果要修改产品表单的默认部分)或displayAdminProductsExtra
(如果可以使用模块表单来处理)将新字段添加到该类和actionGetProductPropertiesAfter
在输出之前修改产品数据数组。完成所有修改后,您只需在任何模板中使用{$ product.your_new_field}即可获取信息。尽管该方法看起来很复杂,但Prestashop开发人员还是鼓励使用这种方法,因为他们不鼓励使用类重写