Я хотел бы сделать пользовательские модификации в продуктах

Я хотел бы сделать пользовательские модификации в продуктах

11.09.2019 10:53:31 Просмотров 54 Источник

Я хотел бы сделать пользовательские модификации в продуктах. Я должен получить информацию из пользовательской таблицы и добавить в массив product в списках продуктов. Я хотел бы, чтобы это поле было доступно во всех категориях и т. д. Кто-нибудь знает, какой класс отвечает за такие модификации?

Тема 1.7.4

У вопроса есть решение - Посмотреть?

Ответы - Я хотел бы сделать пользовательские модификации в продуктах / I would like to do custom modifications in Products

Melvita

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

Вы также можете изменить форму продукта в администрировании следующим образом :

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

Alexander Grosul

12.09.2019 10:27:05

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

Закрыть X