Как программно обновить состояние продукта Prestashop? - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь изучить PS и хочу просто обновить состояние всех продуктов Prestsahop с помощью внешнего скрипта.

У меня есть что-то вроде этого, чтобы отключить все продукты поставщика (пример):

<?php

include(dirname(__FILE__).'/config/config.inc.php');
include(dirname(__FILE__).'/init.php');

$default_lang = Configuration::get('PS_LANG_DEFAULT');
$product = new Product();
if ($product->id_supplier = 2) {
    $product->active = 0;
    $product->update();
}

Но не удалось создать исключение PrestaShopDatabaseException

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

как я понял, вы хотите отключить все продукты для конкретного поставщика

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

require(dirname(__FILE__).'/../config/config.inc.php');

// getting list of product_id
$product_ids = Db::getInstance()->executeS('select id_product from ps_product');

foreach($product_ids as $item) {
    $product = new Product($item['id_product']);
    if ($product->id_supplier == 2) {
        $product->active = false;
        $product->update();
    }
}
0 голосов
/ 30 сентября 2019

Похоже, вы создаете новый продукт и не заполняете обязательные поля.Если вы хотите изменить существующий продукт, вам нужно установить его идентификатор при создании объекта продукта.Таким образом, ваш код должен быть похож на

$product = new Product($id_product, true, $default_lang); // if you want to get certain language, if ont skip the last parameter

if ($product->id_supplier = 2) {
    $product->active = 0;
    $product->update();
}
...