Я хотел бы сделать пользовательские модификации в продуктах
Я хотел бы сделать пользовательские модификации в продуктах. Я должен получить информацию из пользовательской таблицы и добавить в массив product в списках продуктов. Я хотел бы, чтобы это поле было доступно во всех категориях и т. д. Кто-нибудь знает, какой класс отвечает за такие модификации?
Тема 1.7.4
Ответы - Я хотел бы сделать пользовательские модификации в продуктах / I would like to do custom modifications in Products

12.09.2019 12:06:01
Самый простой способ-переопределить класс "продукт"и " категория".
существует много примеров в интернете, поэтому ниже приведен не весь источник кода, а просто объяснение, чтобы показать пользовательское поле на странице списка продуктов.
Пример с полями базы данных для хранения данных в новой таблице, которую вы создали:
"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);
}
}
Чтобы показать свою ценность на странице списка продуктов :
В шаблоне product-list вызовите свою переменную :
<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/
Вот пример модуля для добавления поля в продукты :
Добавить поле в товар Prestashop 1.7
Вы также можете изменить форму продукта в администрировании следующим образом :

12.09.2019 10:27:05
Что касается меня, то лучшей реализацией является создание модуля, который будет обрабатывать ваши требования. Все, что вам нужно, вы можете достичь с помощью hooks actionProductFormModifier
(если вы хотите изменить часть по умолчанию формы продукта) или displayAdminProductsExtra
(если это нормально, чтобы обрабатывать его с помощью формы модуля), чтобы добавить новое поле в класс и actionGetProductPropertiesAfter
для изменения массива данных продукта перед выводом. После всех модификаций вы можете просто получить информацию с помощью {$product.your_new_field} в любом шаблоне. Несмотря на то, что метод кажется сложным, он поощряется разработчиками Prestashop, потому что они препятствуют переопределению классов