我必须将magento迁移到新的定制网店引擎。但是我只有magento 1.6.0.0的mysql转储(core_resource admin_setup版本值。原来的magento不可用!)
我想将所有产品(图片或图片路径,属性等),类别以及订单(如果可能)导出为CSV / XML或其他任何内容。
哪种工作方式最快?
答案 0 :(得分:0)
你最好的选择是安装Mage 1.6.0.0,然后在那里恢复数据库。然后,您可以使用已建立的工具来运行导出。如果您对Magento有经验,这不应该超过一两个小时。
这是关于以这种方式运行它的两篇好文章。这是首选方法,因为某些关系在Magento Core中保留。
这是Michele Marcucci的简短摘要,旨在为Google Merchant创建CSV导出。
define('SAVE_FEED_LOCATION','google_feed.csv');
set_time_limit(0);
require_once 'app/Mage.php';
umask( 0 );
Mage::app( "default" );
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
try {
$handle = fopen(SAVE_FEED_LOCATION, 'w');
$heading = array('id','mpn','ean','title','google_product_category','description','link','image_link','price','brand','product_type','condition', 'availability');
$feed_line= implode("\t", $heading)."\r\n";
fwrite($handle, $feed_line);
$resource = Mage::getSingleton('core/resource');
$readConnection = $resource->getConnection('core_read');
$query = "SELECT * FROM catalog_product_flat_1 WHERE visibility=4 AND type_id='{$type}'";
$tax = "1.21"; // Insert your tax product
$currency = "EUR";
$products = $readConnection->fetchAll($query);
foreach($products as $product) {
$product_data = array();
$product_data['sku'] = $product['sku'];
$product_data['mpn'] = $product['sku'];
$product_data['ean'] = $product['sku'];
$product_data['title'] = ucfirst(strtolower($product['name']));
$product_data['google_product_category'] = 'INSERT YOUR DEFAULT CATEGORY';
if ($product['description'] != "")
$product_data['description'] = Mage::helper('core/string')->truncate(str_replace('“', '"', str_replace('”', '"', iconv("UTF-8","UTF-8//IGNORE", strip_tags($product['description'])))), 8000); // removes most the utf8 errors (doesnt like row if empty too!)
else
$product_data['description'] = "Description not available";
$product_data['deeplink'] = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA).$product['url_path']; // thanks to hamish for this
$product_data['image_link'] = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA).'catalog/product'.$product['small_image'];
if($product['special_price'] != NULL){ // update to check for special price or discount
$product_data['price'] = number_format(($product['special_price']*$tax), 2, ",", "") . " $currency";
} else {
$product_data['price'] = number_format(($product['price']*$tax), 2, ",", "") . " $currency";
}
$product_data['brand'] = "INSERT YOUR BRAND";
$product_data['product_type'] = "";
$product_data['condition'] = "new";
$product_data['availability'] = "in stock";
$i = 1;
$queryCats = "SELECT name FROM catalog_category_product JOIN catalog_category_flat_store_1 ON catalog_category_product.category_id = catalog_category_flat_store_1.entity_id WHERE product_id={$product['entity_id']}";
$cats = $readConnection->fetchAll($queryCats);
$numCat = count($cats);
foreach($cats as $_category){
if ($i == $numCat)
$product_data['product_type'] .= $_category['name'];
else
$product_data['product_type'] .= $_category['name'] . " > ";
$i++;
}
foreach($product_data as $k=>$val){
$bad=array('"',"\r\n","\n","\r","\t");
$good=array(""," "," "," ","");
$product_data[$k] = '"'.str_replace($bad,$good,$val).'"';
}
$feed_line = implode("\t", $product_data)."\r\n";
fwrite($handle, $feed_line);
fflush($handle);
}
fclose($handle);
}
catch(Exception $e)
{
die($e->getMessage());
}