-
- ktsixit

-
Total Posts: 55
Joined: 2008-08-20
|
Τελικά κατάφερα να φτιάξω ένα αρχείο .php το οποίο τραβάει δεδομένα απο το magento και τα μεταφέρει σε ένα αρχείο xml συμβατό με τις απαιτήσεις του skroutz. Δεν είναι κάτι το ιδιαίτερο αλλά κάνει τη δουλειά του.
Για οποιοδήποτε λοιπόν χρειαστεί κάτι παρόμοιο, μπορεί να δημιουργήσει ένα .php αρχείο όπως το παρακάτω και να ορίσει ένα cron job ωστε να εκτελείται ανα τακτά χρονικά διαστήματα (τουλάχιστον μια φορά την ημέρα). Ο κώδικας δημιουργεί ένα xml αρχείο το οποίο τοποθετεί σε ένα φάκελο με όνομα “export”, οπότε θα πρέπει να δημιουργήσετε το φάκελο αυτό.
<?php
define('SAVE_FEED_LOCATION','export/products.xml'); set_time_limit(0);
require_once 'app/Mage.php'; Mage::app('default'); try{ $handle = fopen(SAVE_FEED_LOCATION, 'w');
$heading = '<?xml version="1.0" encoding="UTF-8"?>'."\r\n"; $heading .= '<websitename encoding="utf8" url="http://websitename.gr" name="Website Name">'."\r\n"; $heading .= "\t"."<created_at>".date('Y-m-d G:i')."</created_at>"."\r\n"; $heading .= "\t".'<products>'."\r\n"; $feed_line = $heading; fwrite($handle, $feed_line); //---------------------- GET THE PRODUCTS $products = Mage::getModel('catalog/product')->getCollection(); $products->addAttributeToFilter('status', 1);//enabled $products->addAttributeToFilter('visibility', 4);//catalog, search $products->addAttributeToSelect('*');
$prodIds=$products->getAllIds(); $product = Mage::getModel('catalog/product'); foreach($prodIds as $productId) { $product->load($productId); $product_data = array(); $product_data['start'] = "\t\t".'<product>'."\r\n"; //id $product_data['id'] = "\t".'<id>'.$product->getSku().'</id>'."\r\n"; //name $product_data['name'] = "\t".'<name>'.$product->getName().'</name>'."\r\n"; //url $url_temp = "http://www.websitename.gr/".$product->getUrlPath(); $url_fixed = str_replace("THIS_FILE_NAME.php/", "", $url_temp); $product_data['url'] = "\t".'<url>'.$url_fixed.'</url>'."\r\n"; //image $product_data['image'] = "\t".'<image>'.Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA).'catalog/product'.$product->getImage().'</image>'."\r\n"; //category foreach($product->getCategoryIds() as $_categoryId){ $category = Mage::getModel('catalog/category')->load($_categoryId); $product_data['category'].=$category->getName().', '; } $product_data['category'] = "\t".'<category>'.rtrim($product_data['category'],'- ').'</category>'."\r\n"; //price $normal_price = number_format($product->getPrice(), 2, '.', ''); $special_price = number_format($product->getSpecialPrice(), 2, '.', ''); $price = ""; $todayDate = date('m/d/y'); $special_to_date = $product->getSpecialToDate(); if($special_price != "0.00"){ if($todayDate < $special_to_date){ $price = $normal_price; } else{ $price = $special_price; } } else{ $price = $normal_price; }
$product_data['price'] = "\t".'<price>'.$price.'</price>'."\r\n"; //manufacturer $product_data['manufacturer'] = "\t".'<manufacturer>'.$product->getResource()->getAttribute('manufacturer')->getFrontend()->getValue($product).'</manufacturer>'."\r\n"; //description $product_data['description'] = "\t".'<description><![CDATA['.$product->getDescription().']]></description>'."\r\n"; $product_data['end'] = '</product>'; foreach($product_data as $k=>$val){ $product_data[$k] = $val; }
$feed_line = implode("\t\t", $product_data)."\r\n"; fwrite($handle, $feed_line); fflush($handle); }
$footer = "\t".'</products>'."\r\n"; $footer .= '</websitename>'; $feed_line = $footer; fwrite($handle, $feed_line); fclose($handle); } catch(Exception $e){ die($e->getMessage()); }
?>
|