Prestashop添加产品组合

时间:2016-12-02 08:43:23

标签: php web-services prestashop

我创建了一个小脚本来将产品添加到prestashop商店。 现在我面临一个问题 - 尝试将组合添加到产品中。 这是我的代码现在的样子。 我在这里添加产品后就是我正在做的事情,$ product_id是我新创建的产品

$xml = $webService->get(array('url' => SITE_URL.'/api/combinations?schema=blank'));
$combinations = $xml->children()->children();
$combinations->id_product = $product_id;

$combinations->minimal_quantity = 1;
$combinations->reference = 'dada';
$combinations->price = 99;
$combinations->default_on = 1;
$combinations->associations->product_option_values->product_option_value->id = 1;
$opt = array('resource' => 'products');
$opt['postXml'] = $xml->asXML();

这是来自服务器的响应..

<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
<combination>
<id></id>
<id_product></id_product>
<location></location>
<ean13></ean13>
<upc></upc>
<quantity></quantity>
<reference></reference>
<supplier_reference></supplier_reference>
<wholesale_price></wholesale_price>
<price></price>
<ecotax></ecotax>
<weight></weight>
<unit_price_impact></unit_price_impact>
<minimal_quantity></minimal_quantity>
<default_on></default_on>
<available_date></available_date>
<associations>
<product_option_values>
<product_option_value>
<id></id>
</product_option_value>
</product_option_values>
<images>
<image>
<id></id>
</image>
</images>
</associations>
</combination>
</prestashop>

2 个答案:

答案 0 :(得分:1)

尝试使用以下代码添加产品组合:

$product = new Product($id_product);

$id_product_attribute = $product->addCombinationEntity(
                                Tools::getValue('attribute_wholesale_price'),
                                Tools::getValue('attribute_price') * Tools::getValue('attribute_price_impact'),
                                Tools::getValue('attribute_weight') * Tools::getValue('attribute_weight_impact'),
                                Tools::getValue('attribute_unity') * Tools::getValue('attribute_unit_impact'),
                                Tools::getValue('attribute_ecotax'),
                                0,
                                Tools::getValue('id_image_attr'),
                                Tools::getValue('attribute_reference'),
                                null,
                                Tools::getValue('attribute_ean13'),
                                Tools::getValue('attribute_default'),
                                Tools::getValue('attribute_location'),
                                Tools::getValue('attribute_upc'),
                                Tools::getValue('attribute_minimal_quantity'),
                                array(),
                                Tools::getValue('available_date_attribute')
                            );

有关详细信息,您可以在Product.php类文件中检查addCombinationEntity()函数的定义。

上述函数返回生成的combination_id。

答案 1 :(得分:0)

我找到了一个有效的代码,它没有使用网络服务。

$product = new Product( $product_id );
$combinationAttributes = array();
$combinationAttributes[] = $combination_id;   
$idProductAttribute = $product->addProductAttribute(
                (float)1, //price 
                (float)1, //weight
                1,        //unit_impact
                null ,    //ecotax
                (int)1,   //quantity
                "",       //id_images
                "" , //reference
                strval(""), //suppliers
                strval(""), //ean13
                NULL, //default 
                NULL,  //location
                NULL  //upc
                );
                $product->addAttributeCombinaison($idProductAttribute,                     $combinationAttributes);