如何以编程方式更新Prestashop产品状态?

时间:2019-09-27 09:34:18

标签: php prestashop

我试图学习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 :(得分:0)

您似乎在创建新产品,但没有填写必填字段。如果要更改现有产品,则需要在创建产品对象期间设置其ID。 因此您的代码应类似于

$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();
}

答案 1 :(得分:0)

据我了解,您想禁用特定供应商的所有产品

首先,您要从数据库中的表ps_product获取所有产品ID的列表。然后按每个id_product实例化一个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();
    }
}