Добавить глобальное настраиваемое поле для всех продуктов - PrestaShop 1.6 - PullRequest
0 голосов
/ 15 февраля 2019

Я хочу добавить настраиваемое поле, но одно для всех продуктов, вместо одного для каждого продукта.Для этого я создал override/classes/Product.php:

class Product extends ProductCore{

    public $is_exclusive = null;

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

        Product::$definition['fields']['is_exclusive'] = 
             array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml');
    }

Я могу создать поле в ps_product_lang, но это создаст одну строку на один продукт.

То, что я хочу, это одно поле для всех продуктов.Его можно редактировать и на странице «Продукт».

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Если вам нужно только одно поле для всех продуктов, вам нужно добавить одну конфигурацию.

Вы можете переопределить класс Product и добавить его в метод построения (если это поле доступно только для чтения)

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

    $this->is_exclusive = Configuration::get('custom_key');
}

также вы должны добавить свое пользовательское значение в таблицу конфигурации вручную


Истинный путь - создание нового модуля.вы можете управлять своими конфигурациями на странице конфигурации модуля:

Configuration::updateValue($key, $value); // save data

Configuration::get($key, $id_lang); // get data

Если ваши данные связаны с языком:

$value = [
    1 => 'value 1', // for language 1
    2 => 'value 2', // for language 2
    3 => 'value 3', // for language 3
];
Configuration::updateValue($key, $value); // save data

Configuration::get($key, 2); // get data of language 2

Совет: Самый простой способ - создать новый модуль через Создатель модуля PrestaShop , а затем отредактируйте его.

0 голосов
/ 18 февраля 2019

В этом случае вы либо создаете его в таблице ps_product, так что он присутствует только один раз с переопределением класса Product и переопределением BO страницы продукта.

Либо чтоРекомендую, это создать модуль, который будет привит на крючке «displayAdminProductsExtra», чтобы у вас было больше полей в BO вашего продукта.Таким образом, вы можете иметь свою таблицу дополнительной информации, не меняя структуру Prestashop.

Затем вы можете поместить tpl, чтобы отобразить ее на желаемом крючке в FO.

С уважением

...