galactic Posted May 21, 2013 Share Posted May 21, 2013 (edited) I want export a product list to XML for price comparison engine. I have some PHP script that works partially (not all items works). <?php include(dirname(__FILE__).'/config/config.inc.php'); require_once(dirname(__FILE__).'/init.php'); // Get data $number = (intval(Tools::getValue('n')) ? intval(Tools::getValue('n')) : 10000); $orderByValues = array(0 => 'name', 1 => 'price', 2 => 'date_add', 3 => 'date_upd', 4 => 'position'); $orderWayValues = array(0 => 'ASC', 1 => 'DESC'); $orderBy = Tools::strtolower(Tools::getValue('orderby', $orderByValues[intval(Configuration::get('PS_PRODUCTS_ORDER_BY'))])); $orderWay = Tools::strtoupper(Tools::getValue('orderway', $orderWayValues[intval(Configuration::get('PS_PRODUCTS_ORDER_WAY'))])); if (!in_array($orderBy, $orderByValues)) $orderBy = $orderByValues[0]; if (!in_array($orderWay, $orderWayValues)) $orderWay = $orderWayValues[0]; //$id_category = (intval(Tools::getValue('id_category')) ? intval(Tools::getValue('id_category')) : 1); $currency = new Currency(intval($cookie->id_currency)); $affiliate = (Tools::getValue('ac') ? '?ac='.Tools::getValue('ac') : ''); $categTree = Category::getRootCategory()->recurseLiteCategTree(0); function constructTreeNode($node){ $ret = ';'; $ret .= $node['id'].'|'.$node['name'].';'; if(!empty($node['children'])) { $ret .= ';'; foreach ($node['children'] AS $child) $ret .= constructTreeNode($child); $ret .= ';'; } return $ret; } foreach ($categTree['children'] AS $child) $ulTree .= constructTreeNode($child); $tab_cat=explode(';',$ulTree); foreach ($tab_cat as $id2cat){ $tab_id2cat=explode('|',$id2cat); if (!empty($tab_id2cat)) $tab_cat_final[$tab_id2cat[0]]=$tab_id2cat[1]; } header("Content-Type:text/xml; charset=utf-8"); echo '<?xml version="1.0" encoding="UTF-8"?>'."\n"; ?> <root> <?php foreach ($tab_cat_final as $id_category=>$name_category){ $products = Product::getProducts(intval($cookie->id_lang), 0, ($number > 10000 ? 10000 : $number), $orderBy, $orderWay, $id_category, true); foreach ($products AS $product) { $image = Image::getImages(intval($cookie->id_lang), $product['id_product']); $prix=Product::getPriceStatic($product['id_product']); if ($product['reduction_percent']>0) $prix_promo=$prix*(1-$product['reduction_percent']/100);else $prix_promo=($prix-$product['reduction_price']); echo "<item>\n"; echo "<name><![CDATA[".$product['name']."]]></name>\n"; echo "<link><![CDATA[".htmlspecialchars($link->getproductLink($product['id_product'], $product['link_rewrite'], Tools::getValue('id_category'))).$affiliate."]]></link>\n"; echo "<price>".$prix."</price>\n"; echo "<image>"._PS_BASE_URL_.__PS_BASE_URI__."img/p/".$image[0]['id_product']."-".$image[0]['id_image']."-large.jpg</image>\n"; echo "<category_full><![CDATA[".$name_category."]]></category_full>\n"; echo "<category_link><![CDATA[".htmlspecialchars($link->getcategoryLink($category['id_category'], $category['link_rewrite'], Tools::getValue('id_category'))).$affiliate."]]></category_link>\n"; echo "<manufacturer><![CDATA[".$product['manufacturer_name']."]]></manufacturer>\n"; echo "<reference><![CDATA[".$product['id_product']."]]></reference>\n"; echo "</item>\n"; } } ?> </root> I need get 9 items, format is like this: <? Xml version = "1.0" encoding = "utf-8"?> <root> <item> <name> Nokia 6120 </ name> <link> http://www.myshop.com/info/Nokia6120/</link> <price> 150.55 </ price> <image> http://www.myshop.com/images/Nokia6120.jpg </image> <category_full> Cell Phones & gt; & gt; Nokia </category_full> <category_link> http://www.myshop.com/nokia</category_link> <manufacturer> Nokia </manufacturer> <model> 6120 </model> <in_stock> 7 </in_stock> </ Item> <item> ... </ Item> </ Root> I need help to fix problem for the following items: 1. wrong price format: script show 191.26073 instead of 191.26 and 65 instead of 65.00. 2. show incorrect image path: http://mysite.com/img/p/8-27-large.jpg, the correct patch need to be: http://mysite.com/27...ult/picture.jpg 3. incorrect category_link: 'http://mysite.com/en/-', need to be http://www.mysite.com/7-cellphones/ 4. I need get <model> 6120 </model> and 5. <in_stock> 5 </in_stock> quantity Any help would be appreciated. Edited May 21, 2013 by galactic (see edit history) Link to comment Share on other sites More sharing options...
shacker Posted May 23, 2013 Share Posted May 23, 2013 search in the forum the module export products, its very usefull Link to comment Share on other sites More sharing options...
galactic Posted May 24, 2013 Author Share Posted May 24, 2013 search in the forum the module export products, its very usefull if you mean http://www.prestashop.com/forums/topic/37900-module-product-export-module-v10-updated-for-14-free/ its for CSV export, not XML, and it for PS 1.4 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