Jump to content
php.lv forumi

prieks

Reģistrētie lietotāji
  • Posts

    6
  • Joined

  • Last visited

prieks's Achievements

Newbie

Newbie (1/14)

  1. 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?
  2. 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?
  3. 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
  4. Š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>
  5. 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.
×
×
  • Create New...