prieks
Reģistrētie lietotāji-
Posts
6 -
Joined
-
Last visited
prieks's Achievements
Newbie (1/14)
-
Paldies par palīdzību! Sanāca. Taču vienalga paliek otrs jautājums - man vajadzētu, lai šis xml fails ikdienas tiktu automātiski atjaunots. Kā es to varu izdarīt?
-
Ievietoju paste.php.lv
-
Radusies baigā problēma. Gribu no Prestashop izvilkt produktu datus xml failā, lai varētu parādīt salidzini.lv. Atradu kādu jau gatavu variantu, taču ar to man rodas kļūdas. Kods ir šāds: $tags = array( 'name' => 'name', 'link' => 'link', 'price_inc' => 'price', 'imageUrl' => 'image', 'ean' => 'ean', 'categoryName' => 'category_full', 'subCategoryName' => 'subCategory', 'manufacturerName' => 'manufacturer', ); function my_strip_tags($t) { $t = preg_replace('/</',' <',$t); $t = preg_replace('/>/','> ',$t); $t = preg_replace('/[\n\r\t]/',' ',$t); $t = preg_replace('/ /',' ',$t); return strip_tags($t); } function print_field($k, $v) { global $tags; if (isset($tags[$k])) { $k = $tags[$k]; $v = htmlspecialchars($v, ENT_NOQUOTES, "UTF-8"); print " <$k>$v</$k>\n"; } } header("Content-Type:text/xml; charset=utf-8"); print '<?xml version="1.0" encoding="UTF-8"?>'."\n"; print "<root>\n"; $configuration = Configuration::getMultiple(array( 'PS_LANG_DEFAULT', 'PS_SHIPPING_FREE_PRICE', 'PS_SHIPPING_HANDLING', 'PS_SHIPPING_METHOD', 'PS_SHIPPING_FREE_WEIGHT', 'PS_CARRIER_DEFAULT')); $id_lang = intval($configuration['PS_LANG_DEFAULT']); $id_zone = intval($defaultCountry->id_zone); $link = new Link(); $id_carrier = $configuration['PS_CARRIER_DEFAULT']; $carrier = new Carrier(intval($id_carrier)); $carrierTax = 0; if ($carrier->id_tax) { $tax = new Tax(intval($carrier->id_tax)); if (Validate::isLoadedObject($tax) AND Tax::zoneHasTax(intval($tax->id), intval($id_zone)) AND !Tax::excludeTaxeOption()) $carrierTax = $tax->rate; } $passwd = Tools::getValue('passwd'); $categories = Category::getCategories($id_lang, true, false); $manufacturers = Manufacturer::getManufacturers(false, $id_lang); if ($passwd == $confPasswd) { $products = Product::getProducts($id_lang, 0, 0, 'price', 'ASC', false, true); } else { $products = array(); } $manMap =array(); foreach ($manufacturers as $manufacturer) { $manMap[$manufacturer['id_manufacturer']] = $manufacturer; } $catMap =array(); foreach ($categories as $category) { $catMap[$category['id_category']] = $category; } foreach ($products as $product) { $product['link'] = $link->getProductLink($product['id_product']); $product['price_inc'] = $product['price'] * (1 + $product['tax_rate'] / 100); $product['price_inc'] = round($product['price_inc'], 2); $cover = Product::getCover($product['id_product']); $product['imageUrl'] = _PS_BASE_URL_.$link->getImageLink($prodObj->link_rewrite, $product['id_product'].'-'.$cover['id_image'], 'large'); $product['manufacturerName'] = $manMap[$product['id_manufacturer']]['name']; print " <item>\n"; foreach ($product as $k => $v) { print_field($k, $v); } $catList = Product::getIndexedCategories($product['id_product']); foreach ($catList as $cat) { $catNames = array(); $catId = $cat['id_category']; while ($catId && $catId != 1) { array_unshift($catNames, trim($catMap[$catId]['name'])); $catId = $catMap[$catId]['id_parent']; } print_field('categoryName', implode(' | ', $catNames)); //$result = mysql_query("SELECT * FROM s_category_product WHERE id_category='{$cat['id_category']}'"); //while($row = mysql_fetch_array($result)) { echo "<category_link>http://mansdomeins.lv/category.php?id_category={$cat['id_category']}</category_link>"; //} } print " </item>\n"; } print "</root>\n"; Taču izvadot rodas problēma. Ja konkrētajam produktam ir atzīmētas vairākas kategorijas, tad arī tiek piešķirtas izvadē vairākas kategorijas. Kā es varu likt izvadīt produktu tikai ar 1 kategoriju? (<category_full>) Un otrs jautājums - man vajadzētu, lai šis xml fails ikdienas tiktu atjaunots. Kā es to varu izdarīt?
-
Var redzēt, ka izvada no datubāzes 1 kategoriju, kas ir visu kategoriju apkopujums - kam nav piesaistīti produkti. Uzliekot šo te - nav nekādu izmaiņu
-
Šajā gadījumā pazūd vispār <category_full> Pirmajā produkta aprakstā tagad paliek šādi <category_link>http://manalapa.lv/category.php?id_category=5</category_link> <category_link>http://manalapa.lv/category.php?id_category=1</category_link>
-
Esmu izveidojis veikalu iekš prestashop. Taču priekš salidzini.lv vajaga dabūt laukā produktus xml formā. Ir izveidots skripts, taču kaut kas mazliet klibo... <?php $tags = array( 'name' => 'name', 'link' => 'link', 'price_inc' => 'price', 'imageUrl' => 'image', 'ean' => 'ean', 'categoryName' => 'category_full', 'subCategoryName' => 'subCategory', 'manufacturerName' => 'manufacturer', ); function my_strip_tags($t) { $t = preg_replace('/</',' <',$t); $t = preg_replace('/>/','> ',$t); $t = preg_replace('/[\n\r\t]/',' ',$t); $t = preg_replace('/ /',' ',$t); return strip_tags($t); } function print_field($k, $v) { global $tags; if (isset($tags[$k])) { $k = $tags[$k]; $v = htmlspecialchars($v, ENT_NOQUOTES, "UTF-8"); print " <$k>$v</$k>\n"; } } header("Content-Type:text/xml; charset=utf-8"); print '<?xml version="1.0" encoding="UTF-8"?>'."\n"; print "<root>\n"; $configuration = Configuration::getMultiple(array( 'PS_LANG_DEFAULT', 'PS_SHIPPING_FREE_PRICE', 'PS_SHIPPING_HANDLING', 'PS_SHIPPING_METHOD', 'PS_SHIPPING_FREE_WEIGHT', 'PS_CARRIER_DEFAULT')); $id_lang = intval($configuration['PS_LANG_DEFAULT']); $id_zone = intval($defaultCountry->id_zone); $link = new Link(); $id_carrier = $configuration['PS_CARRIER_DEFAULT']; $carrier = new Carrier(intval($id_carrier)); $carrierTax = 0; if ($carrier->id_tax) { $tax = new Tax(intval($carrier->id_tax)); if (Validate::isLoadedObject($tax) AND Tax::zoneHasTax(intval($tax->id), intval($id_zone)) AND !Tax::excludeTaxeOption()) $carrierTax = $tax->rate; } $passwd = Tools::getValue('passwd'); $categories = Category::getCategories($id_lang, true, false); $manufacturers = Manufacturer::getManufacturers(false, $id_lang); if ($passwd == $confPasswd) { $products = Product::getProducts($id_lang, 0, 0, 'price', 'ASC', false, true); } else { $products = array(); } $manMap =array(); foreach ($manufacturers as $manufacturer) { $manMap[$manufacturer['id_manufacturer']] = $manufacturer; } $catMap =array(); foreach ($categories as $category) { $catMap[$category['id_category']] = $category; } foreach ($products as $product) { $product['link'] = $link->getProductLink($product['id_product']); $product['price_inc'] = $product['price'] * (1 + $product['tax_rate'] / 100); $cover = Product::getCover($product['id_product']); $product['imageUrl'] = _PS_BASE_URL_.$link->getImageLink($prodObj->link_rewrite, $product['id_product'].'-'.$cover['id_image'], 'large'); $product['manufacturerName'] = $manMap[$product['id_manufacturer']]['name']; print " <item>\n"; foreach ($product as $k => $v) { print_field($k, $v); } $catList = Product::getIndexedCategories($product['id_product']); foreach ($catList as $cat) { $catNames = array(); $catId = $cat['id_category']; while ($catId && $catId != 1) { array_unshift($catNames, trim($catMap[$catId]['name'])); $catId = $catMap[$catId]['id_parent']; } print_field('categoryName', implode(' | ', $catNames)); //$result = mysql_query("SELECT * FROM s_category_product WHERE id_category='{$cat['id_category']}'"); //while($row = mysql_fetch_array($result)) { echo "<category_link>http://manalapa.lv/category.php?id_category={$cat['id_category']}</category_link>"; //} } print " </item>\n"; } print "</root>\n"; ?> Rezultātā dabūnu šādu xml: <?xml version="1.0" encoding="UTF-8"?> <root> <item> <name>GentleDay Higiēnas paketes lietošanai naktī</name> <link>http://manalapa.lv/product.php?id_product=10</link> <price>1.79999963</price> <image>http://manalapa.lv/10-50-large/.jpg</image> <manufacturer>Gentle Day</manufacturer> <category_full>Higiēnas preces</category_full> <category_link>http://manalapa.lv/category.php?id_category=5</category_link> <category_full></category_full> <category_link>http://manalapa.lv/category.php?id_category=1</category_link> </item> <item> <name>GentleDay Ikdienas higiēnas ieliktnīši (String)</name> <link>http://manalapa.lv/product.php?id_product=13</link> <price>1.79999963</price> <image>http://manalapa.lv/13-60-large/.jpg</image> <manufacturer>Gentle Day</manufacturer> <category_full>Higiēnas preces</category_full> <category_link>http://manalapa.lv/category.php?id_category=5</category_link> </item> <item> Viss it kā strādā, taču pirmajā daļā parādas lieks jauns category_full, kas liek izmest arī jaunu linku. Nesaprotu, kā to dabūt prom. Jo pārējiem izvadītajiem ierakstiem viss ir kārtībā - tik pirmais klebo.