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
![](http://p.blog.csdn.net/images/p_blog_csdn_net/xinhaozheng/EntryImages/20090703/1633822382677134066.JPG)
![](http://p.blog.csdn.net/images/p_blog_csdn_net/xinhaozheng/EntryImages/20090703/2633822382724944730.JPG)
![](http://p.blog.csdn.net/images/p_blog_csdn_net/xinhaozheng/EntryImages/20090703/3633822383830527274.JPG)
目前尚未测试的问题(不过应该是可以的):
上传图片时如何指定各个图片的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,下面这些字段 是必须的,少一个都会失败,似乎都不能为空(末有时间去一一验证)
碰到的常见问题(统统搞定,哈哈):
多图上传
上传后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_set | category_ids | description | image | is_in_stock | name | price | qty | short_description | sku | small_image | special_price | status |
相关文章推荐
- magento -- 如何在magento中进行产品的批量上传
- magento -- 如何在magento中实现产品的批量上传
- 如何实现Magento产品批量导入?
- magento后台如何批量删除产品
- magento后台如何批量删除产品
- Magento入门基础 - 后台如何批量导入产品及产品图片
- magento 单产品多图片批量上传方法
- magento 单产品多图片批量上传技巧
- 使用Magento导入导出功能实现批量上传带图片产品
- Magento: 如何对产品进行分目录的产品搜索
- 如何给magento的产品分类创建一个自定义属性?
- magento如何改变产品的排序方式
- 如何使用nexus上传代码,进行依赖
- 如何批量上传商品
- 有一批照片需要进行重命名win7如何批量重命名照片
- Magento如何设置产品的打折或者优惠价格
- WEB版一次选择多个文件进行批量上传(Plupload)的解决方案
- 如何说服用户进行产品升级
- magento如何根据sku显示产品销售量
- 管道指令如何配合mv进行特殊文件的批量剪切