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

多图上传

上传后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


magento -- 如何在magento中进行产品的批量上传_数据文件


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


magento -- 如何在magento中进行产品的批量上传_字段_03

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

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

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

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



1. $custom_options= array();


1.   
2. error_log($field, 3, "my-errors.log");
3.
4. if(strpos($field,':')!==FALSE && strlen($value)) {
5. $values=explode('|',$value);
6. if(count($values)>0) {
7. @list($title,$type,$is_required,$sort_order) = explode(':',$field);
8. $title= ucfirst(str_replace('_',' ',$title));
9. $custom_options[] = array(
10. 'is_delete'=>0,
11. 'title'=>$title,
12. 'previous_group'=>'',
13. 'previous_type'=>'',
14. 'type'=>$type,
15. 'is_require'=>$is_required,
16. 'sort_order'=>$sort_order,
17. 'values'=>array()
18. );
19. foreach($valuesas$v) {
20. $parts= explode(':',$v);
21. $title= $parts[0];
22. if(count($parts)>1) {
23. $price_type= $parts[1];
24. } else{
25. $price_type= 'fixed';
26. }
27. if(count($parts)>2) {
28. $price= $parts[2];
29. } else{
30. $price=0;
31. }
32. if(count($parts)>3) {
33. $sku= $parts[3];
34. } else{
35. $sku='';
36. }
37. if(count($parts)>4) {
38. $sort_order= $parts[4];
39. } else{
40. $sort_order= 0;
41. }
42. switch($type) {
43. case'file':
44.
45. break;
46.
47. case'field':
48. case'area':
49. $custom_options[count($custom_options) - 1]['max_characters'] = $sort_order;
50.
51.
52. case'date':
53. case'date_time':
54. case'time':
55. $custom_options[count($custom_options) - 1]['price_type'] = $price_type;
56. $custom_options[count($custom_options) - 1]['price'] = $price;
57. $custom_options[count($custom_options) - 1]['sku'] = $sku;
58. break;
59.
60. case'drop_down':
61. case'radio':
62. case'checkbox':
63. case'multiple':
64. default:
65. $custom_options[count($custom_options) - 1]['values'][]=array(
66. 'is_delete'=>0,
67. 'title'=>$title,
68. 'option_type_id'=>-1,
69. 'price_type'=>$price_type,
70. 'price'=>$price,
71. 'sku'=>$sku,
72. 'sort_order'=>$sort_order,
73. );
74. break;
75. }
76. }
77. }
78. }
79.


1.  
2. foreach($product->getOptions() as$o) {
3. $o->getValueInstance()->deleteValue($o->getId());
4. $o->deletePrices($o->getId());
5. $o->deleteTitles($o->getId());
6. $o->delete();
7. }
8.
9. if(count($custom_options)) {
10. foreach($custom_optionsas$option) {
11. try {
12. $opt= Mage::getModel('catalog/product_option');
13. $opt->setProduct($product);
14. $opt->addOption($option);
15. $opt->saveOptions();
16. }
17. catch (Exception $e) {}
18. }
19. }


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

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