您的位置:首页 > 其它

magento -- 如何在magento中进行产品的批量上传

2013-05-27 22:11 441 查看
,终于可以完全实现指产品批量上传的功能,免除网速慢,在页面之间跳来跳去,以及重复输入数据的烦恼,你只需要在excel中编辑数据就可以轻松实现产品批量上传到magento站点。

碰到的常见问题(统统搞定,哈哈):

多图上传



上传后magento前台无法查看

上传后前台看不了图片

上传后前台只能看到部分图片

上传后前台的图片有重复

不能上传custom option(可以支持基于option的price,sku,sort order)

(注:对外承接产品批量上传服务,1000个产品以下只收60RMB,有需要的可以联系)

实现步骤:

1、将所有的产品图片上传到magento/media/import

2、进入magento管理后台 -- import/export -- profile 选择export all product

进行基本设定后选择 run profile,你会在magento/var/export下面找到一个文件

3、以这个文件为模板进行编辑,如果站点是多语言的,要注意一个产品最好是提供各个语言的记录

4、image,small_image,thumbnail的路径要以/开头

5、数据文件可以是csv或xml格式,不过顺序要和后台设置相对应

6、同一个产品的SKU要一致,不同产品的SKU不要重复,magento通过sku来识别某个产品

7、如果要导入magento的custom option要设定magento产品属性has options为1

8、custom option在数据文件中要放在最后一列

9、将数据文件上传到magento的/var/export目录(也可以是var/import),这个取决于你在magento导入导出中import profile中的设置

10.还是进入magento后台编辑同一个profile,不过将方向修改为import保存后,执行run profile in pop window







目前尚未测试的问题(不过应该是可以的):

上传图片时如何指定各个图片的label

关于图片上传和custom option的上传都需要我们修改magento的代码,打上补丁才可以的。

(如需转载,请注明出处 :)

view
plaincopy
to clipboardprint?

$custom_options = array();

view
plaincopy
to clipboardprint?

error_log($field, 3, "my-errors.log");

if(strpos($field,':')!==FALSE && strlen($value)) {

$values=explode('|',$value);

if(count($values)>0) {

@list($title,$type,$is_required,$sort_order) = explode(':',$field);

$title = ucfirst(str_replace('_',' ',$title));

$custom_options[] = array(

'is_delete'=>0,

'title'=>$title,

'previous_group'=>'',

'previous_type'=>'',

'type'=>$type,

'is_require'=>$is_required,

'sort_order'=>$sort_order,

'values'=>array()

);

foreach($values as $v) {

$parts = explode(':',$v);

$title = $parts[0];

if(count($parts)>1) {

$price_type = $parts[1];

} else {

$price_type = 'fixed';

}

if(count($parts)>2) {

$price = $parts[2];

} else {

$price =0;

}

if(count($parts)>3) {

$sku = $parts[3];

} else {

$sku='';

}

if(count($parts)>4) {

$sort_order = $parts[4];

} else {

$sort_order = 0;

}

switch($type) {

case 'file':

break;

case 'field':

case 'area':

$custom_options[count($custom_options) - 1]['max_characters'] = $sort_order;

case 'date':

case 'date_time':

case 'time':

$custom_options[count($custom_options) - 1]['price_type'] = $price_type;

$custom_options[count($custom_options) - 1]['price'] = $price;

$custom_options[count($custom_options) - 1]['sku'] = $sku;

break;

case 'drop_down':

case 'radio':

case 'checkbox':

case 'multiple':

default:

$custom_options[count($custom_options) - 1]['values'][]=array(

'is_delete'=>0,

'title'=>$title,

'option_type_id'=>-1,

'price_type'=>$price_type,

'price'=>$price,

'sku'=>$sku,

'sort_order'=>$sort_order,

);

break;

}

}

}

}

view
plaincopy
to clipboardprint?

foreach ($product->getOptions() as $o) {

$o->getValueInstance()->deleteValue($o->getId());

$o->deletePrices($o->getId());

$o->deleteTitles($o->getId());

$o->delete();

}

if(count($custom_options)) {

foreach($custom_options as $option) {

try {

$opt = Mage::getModel('catalog/product_option');

$opt->setProduct($product);

$opt->addOption($option);

$opt->saveOptions();

}

catch (Exception $e) {}

}

}

补充:实在有太多的人询问相关的问题,所以补充一下常见的问题

1,注意通常使用的是linux服务器,所以文件名是分大小写的

2,fieldset和store字段也有碰到大小写的问题

3,目前打的这个补丁没有对字段中的值处理前置或后续的空格,所以一定要确保你输入的值当中没有空格,否则出错

4,custom optoin要上传之前要先打好补丁,格式要正确

5,下面这些字段 是必须的,少一个都会失败,似乎都不能为空(末有时间去一一验证)
attribute_setcategory_idsdescriptionimageis_in_stocknamepriceqtyshort_descriptionskusmall_imagespecial_pricestatus
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: