magento -- 如何在magento中进行产品的批量上传
花费了好多时间,阅读了magento官方论坛上几乎所有的批量上传产品的相关帖子,分析了大量相关magento代码,终于可以完全实现指产品批量上传的功能,免除网速慢,在页面之间跳来跳去,以及重复输入数据的烦恼,你只需要在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的代码,打上补丁才可以的。
(如需转载,请注明出处 :)
- $custom_options = array();
- /* CUSTOM OPTION CODE */
- 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':
- /* TODO */
- break;
- case 'field':
- case 'area':
- $custom_options[count($custom_options) - 1]['max_characters'] = $sort_order;
- /* NO BREAK */
- 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;
- }
- }
- }
- }
- /* END CUSTOM OPTION CODE */
- /* Remove existing custom options attached to the product */
- foreach ($product->getOptions() as $o) {
- $o->getValueInstance()->deleteValue($o->getId());
- $o->deletePrices($o->getId());
- $o->deleteTitles($o->getId());
- $o->delete();
- }
- /* Add the custom options specified in the CSV import file */
- 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 |
magento -- 如何在magento中进行产品的批量上传的更多相关文章
- magento批量上传产品
Step1:表格仔细检查无误后,将准备好的图片上传至 media/import中.如果使用专用的图片服务器,把图片上传到服务器上,当然表格中的图片地址要做相应的修改. Step2:然后,登陆Magen ...
- zt对于C#中的FileUpload解决文件上传大小限制的问题设置
对于C#中的FileUpload解决文件上传大小限制的问题设置 您可能没意识到,但对于可以使用该技术上载的文件的大小存在限制.默认情况下,使用 FileUpload 控件上载到服务器的文件最大为 4M ...
- ueditor1.3.6jsp版在struts2应用中上传图片报"未找到上传文件"解决方案
摘要: ueditor1.3.6jsp版在struts2应用中上传图片报"未找到上传文件"解决方案 在struts2应用中使用ueditor富文本编辑器上传图片或者附件时,即使配置 ...
- 【javascript】html5中使用canvas编写头像上传截取功能
[javascript]html5中使用canvas编写头像上传截取功能 本人对canvas很是喜欢,于是想仿照新浪微博头像上传功能(前端使用canvas) 本程序目前在谷歌浏览器和火狐浏览器测试可用 ...
- vue+element-ui中的图片获取与上传
vue+element-ui中的图片获取与上传 工作上接触了一下图片的处理,图片的格式是文件流, 记录如下. 请求图片 请求图片的时候,带上{ responseType: 'blob' }, 否则图片 ...
- mvc中使用uploadify批量上传的应用
网上找了很多资料都没有发现一个好用.可以用的uploadify批量上传的应用,这里通过官方和自己的一些项目需要整理了一个出来. 希望能帮助到需要的人. 效果图:
- 使用phpExcel批量上传excel表数据到mysql数据库中
/*批量上传数据*/ if(isset($_POST['submit']) && $_POST['submit']=='上传文件') { //导入类文件 require_once (& ...
- 分享知识-快乐自己:SpringMvc中的单多文件上传及文件下载
摘要:SpringMvc中的单多文件上传及文件下载:(以下是核心代码(拿过去直接能用)不谢) <!--设置文件上传需要的jar--> <dependency> <grou ...
- python中使用multipart/form-data请求上传文件
最近测试的接口是上传文件的接口,上传单个文件,我主要使用了2种方法~ 接口例如: URL: http://www.baidu.com/*** method:post 参数: { "salar ...
随机推荐
- go 并发
package main import ( "fmt" "time" ) func say(s string) { ; i < ; i++ { time. ...
- ubuntu16.04 kinetic 安装 robot-pose-publisher
sudo apt-get install ros-kinetic-robot-pose-publisher
- LIBS+=
ZC: “LIBS+=”是要结合“LIBPATH += ”一起使用的?类似下面的用法: ZC: “LIBS+=”指明lib文件的名称,“LIBPATH += ”指明lib文件的路径.最后还要把DLL文 ...
- [C++] string与int, float, double相互转换
参考:http://blog.csdn.net/candadition/article/details/7342380 将string类型转换为int, float, double类型 主要通过以下几 ...
- hihoCoder 1636 Pangu and Stones
hihoCoder 1636 Pangu and Stones 思路:区间dp. 状态:dp[i][j][k]表示i到j区间合并成k堆石子所需的最小花费. 初始状态:dp[i][j][j-i+1]=0 ...
- Type cvc-complex-type.2.4.a: Invalid content was found starting with element 'build'.错误的解决方法
项目突然间爆出了这样的问题: Description Resource Path Location Typecvc-complex-type.2.4.a: Invalid content was fo ...
- tomcat8w.exe 运行 提示 指定的服务未安装 unable to open the service 'tomcat8'
新下载的Tomcat8 解压版,解压缩完成后,双击tomcat8.exe出现个DOS样子的窗口一闪而过消失了,tomcat也没有启动成功.双击tomcat8w.exe 弹出个错误对话框,说“指定的服务 ...
- c++中的引用详解
什么是引用? 引用是C++语言的一个特殊的数据类型描述,用于在程序的不同的部分使用两个以上的变量名指向同一块地址,使得对其中任何一个变量的操作实际上都是对同一地址单元进行的. 使用时的注意事项: 引用 ...
- POJ-1180 Batch Scheduling (分组求最优值+斜率优化)
题目大意:有n个任务,已知做每件任务所需的时间,并且每件任务都对应一个系数fi.现在,要将这n个任务分成若干个连续的组,每分成一个组的代价是完成这组任务所需的总时间加上一个常数S后再乘以这个区间的系数 ...
- UVA-11882 Biggest Number (DFS+剪枝)
题目大意:给出一个方格矩阵,矩阵中有数字0~9,任选一个格子为起点,将走过的数字连起来构成一个数,找出最大的那个数,每个格子只能走一次. 题目分析:DFS.剪枝方案:在当前的处境下,找出所有还能到达的 ...