jitheshkt Posted February 10, 2015 Share Posted February 10, 2015 Hi I am just new and starting up. My requirement was to import XML product list to Prestashop as products. Thankfully there is already a sample documentation on the same provided in the documentation of prestashop. I just copy pasted and tried it out. Sadly it doesn't worked well. I will copy paste the code I tried below and the error message after that. PHP File (located in the root directory of prestashop): <?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>Test product</Products_name> <Price>49.99</Price> <Active_product>1</Active_product> <SupplierNo>8</SupplierNo> <Weight>5</Weight> <Description>My long product description</Description> <Short_Description>Product desc.</Short_Description> <MinOrderQty>1</MinOrderQty> <Categories> <Category> <CategoryID>3</CategoryID> <CategoryName>Home\Prod</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<?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>Test product</Products_name> <Price>49.99</Price> <Active_product>1</Active_product> <SupplierNo>8</SupplierNo> <Weight>5</Weight> <Description>My long product description</Description> <Short_Description>Product desc.</Short_Description> <MinOrderQty>1</MinOrderQty> <Categories> <Category> <CategoryID>3</CategoryID> <CategoryName>Home\Prod</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 />'; } } ($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 />'; } } Error message is : Fatal error: Uncaught exception 'PrestaShopException' with message 'Property Product->link_rewrite is empty' I tried to var_dump $product->link_rewrite1 inside the loop and it does have string "test-product". What I am missing ? Screenshot of complete error message : Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now