2013-06-19 30 views
4

我有一個正在由股票管理軟件生成的xml文件,我希望將其插入到Pretashop數據庫中。任何人都可以幫助我這個XML文件?如何使用webservice將產品添加到來自xml文件的prestashop

<?xml version="1.0" encoding="UTF-8"?> 
<Document> 
<Products> 
<Reference>1101TEST</Reference> 
<Valid_internet_product>1</Valid_internet_product> 
<Products_name>universal</Products_name> 
<Price>69.95</Price> 
<Active_product>1</Active_product> 
<SupplierNo>08</SupplierNo> 
<Weight>5</Weight> 
<Description>Koncentreret universalmiddel med salmiak</Description> 
<Short_Description>Koncentreret universalmiddel med salmiak</Short_Description> 
<MinOrderQty>1</MinOrderQty> 
<Categories> 
<Category> 
<CategoryID>63</CategoryID> 
<CategoryName>Bins\Universal</CategoryName> 
<Active_category>1</Active_category> 
<Changed>0</Changed> 
</Category> 
</Categories> 
<Tax_Class_ID>1</Tax_Class_ID> 
<Discount> 
<Discount_percentage>percentage</Discount_percentage> 
<discountprice_ex_vat>0</discountprice_ex_vat> 
<Discountprice_include_vat>0</Discountprice_include_vat> 
<Pct_ReductionPercent>0</Pct_ReductionPercent> 
</Discount> 
</Products> 
</Document> 

回答

4

與PrestaShop您可以使用這些選項之一方便地導入您的數據:

  1. 通過使用在後臺的「CSV導入」功能(假設你也有一個.csv出口,而不是這個XML文件)
  2. 通過使用的Prestashop網絡服務(定製開發所需)
  3. 通過使用現有的類(需定製開發)

下面是一個處理XML字符串的快速代碼片段。 它將創建或更新的所有產品,並考慮到其價格,可用性,名稱,描述,重量等

請注意:

  • 此代碼將不是被設計工作組合(顏色,大小等)
  • 此代碼不會爲您創建類別,並且將所有的產品,以「家」範疇

這僅僅是一個例子來幫助你;)

<?php 

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

$xml_string = <<<XML 
<?xml version="1.0" encoding="UTF-8"?> 
<Document> 
<Products> 
<Reference>1101TEST</Reference> 
<Valid_internet_product>1</Valid_internet_product> 
<Products_name>universal</Products_name> 
<Price>69.95</Price> 
<Active_product>1</Active_product> 
<SupplierNo>08</SupplierNo> 
<Weight>5</Weight> 
<Description>Koncentreret universalmiddel med salmiak</Description> 
<Short_Description>Koncentreret universalmiddel med salmiak</Short_Description> 
<MinOrderQty>1</MinOrderQty> 
<Categories> 
<Category> 
<CategoryID>63</CategoryID> 
<CategoryName>Bins\Universal</CategoryName> 
<Active_category>1</Active_category> 
<Changed>0</Changed> 
</Category> 
</Categories> 
<Tax_Class_ID>1</Tax_Class_ID> 
<Discount> 
<Discount_percentage>percentage</Discount_percentage> 
<discountprice_ex_vat>0</discountprice_ex_vat> 
<Discountprice_include_vat>0</Discountprice_include_vat> 
<Pct_ReductionPercent>0</Pct_ReductionPercent> 
</Discount> 
</Products> 
</Document> 
XML; 

$xml = simplexml_load_string($xml_string); 
foreach ($xml->Products as $product_xml) 
{ 
    if ($product_xml->Valid_internet_product == 1) 
    { 
     /* Update an existing product or Create a new one */ 
     $id_product = (int)Db::getInstance()->getValue('SELECT id_product FROM '._DB_PREFIX_.'product WHERE reference = \''.pSQL($product_xml->Reference).'\''); 
     $product = $id_product ? new Product((int)$id_product, true) : new Product(); 
     $product->reference = $product_xml->Reference; 
     $product->price = (float)$product_xml->Price; 
     $product->active = (int)$product_xml->Active_product; 
     $product->weight = (float)$product_xml->Weight; 
     $product->minimal_quantity = (int)$product_xml->MinOrderQty; 
     $product->id_category_default = 2; 
     $product->name[1] = utf8_encode($product_xml->Products_name); 
     $product->description[1] = utf8_encode($product_xml->Description); 
     $product->description_short[1] = utf8_encode($product_xml->Short_Description); 
     $product->link_rewrite[1] = Tools::link_rewrite($product_xml->Products_name); 
     if (!isset($product->date_add) || empty($product->date_add)) 
      $product->date_add = date('Y-m-d H:i:s'); 
     $product->date_upd = date('Y-m-d H:i:s'); 
     $id_product ? $product->updateCategories(array(2)) : $product->addToCategories(array(2)); 
     $product->save(); 

     echo 'Product <b>'.$product->name[1].'</b> '.($id_product ? 'updated' : 'created').'<br />'; 
    } 
} 
+0

親愛的布魯諾,循環拋出一個錯誤,如下所示:「致命錯誤:帶有消息」屬性Product-> link_rewrite爲空「的未捕獲異常'PrestaShopException'。任何線索? –

相關問題