Magento 批量上传怎么解决批量导入鞋子尺寸
Magento批量上传里面,我写好了一个带有customoptions的产品,然后导出csv文件时候,却没有customoptions里面写的东西。只有一项值是has_o...
Magento批量上传里面,我写好了一个带有custom options的产品,然后导出csv文件时候,却没有custom options里面写的东西。 只有一项值是has_options 然后是1 ,csv文件根本没有size这一栏。
所以照着这个导出的产品编写其他的产品的时候,导入以后就没有我需要的"size"。哪位高手能告诉我我该怎么怎么设置鞋子的Size尺寸。 展开
所以照着这个导出的产品编写其他的产品的时候,导入以后就没有我需要的"size"。哪位高手能告诉我我该怎么怎么设置鞋子的Size尺寸。 展开
1个回答
2013-04-23
展开全部
实现方法:复制 app/code/core/Mage/Catalog/Model/Convert/Adapter/Product.php 这个文件到app/code/local/Mage/Catalog/Model/Convert/Adapter/Product.php.这会防止自动更新撤回你的改动。 第二步,你需要加入一些代码到 local 那个版本的Product.php下(code/local/Mage/Catalog/Model/Convert/Adapter/Product.php).
下面的行号是 Magento 1.4.1.1版的。 老的版本可能会有点不一样。在大约617行的时候你会看到:foreach ($importData as $field => $value) { 在这行上面加入:
$custom_options = array();
现在来到627行,你可以看下以下代码:$attribute = $this->getAttribute($field);
if (!$attribute) {
在 if (!$attribute) { 这个语句的后面,需要加入下面这些代码: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;
}
}
}
}现在移到783行的位子,你会看到 $product->save();就在这后面,加入下面的代码:foreach ($product->getOptions() as $o) {
$o->getValueInstance()->deletue($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) {}
}
}
就是这样了,现在一切就绪准备导入自定义产品选项了。要导入一个自定义选项,你需要在你的CSV导入文件中添加新的一列。新列的名字决定了该选项的名称和类型。格式应该是: Title:Input Type:Is Required:Sort Order. (名称:类型:是否必需: 属性排序)。例如,要创建一个必需的下拉式选项,名称为“Size”,而且在前台显示自定义属性排序第一,那么列标题应该为:Size:drop_down:1 :1 (红色1 表示必需,0表示可选,后面那个1表示自定义属性在前台的显示位置)这是类型的一列。他们会在Magento 管理员界面中的"cumstom options"出现。 而类型一般都有多种值(drop_down下拉式, radio 单选, checkbox 复选框, multiple 复合式),你可以用一个 | 的分隔符来指定多种值。 例如:小,中,大 你可以用 "小|中|大" 作为你csv文件里 "Size:drop_down:1" 一列的值。
这里有一个导入格式:
sku, name, description, price, Size:drop_down:1
T-Shirt1, T-Shirt, A T-Shirt, 5.00, Small|Medium|Large
T-Shirt2, T-Shirt2, Another T-Shirt, 6.00, XS|S|M|L|XL
另外你可以为每一个自定义选项值指定一个额外的 价格和 SKU 。这个的语句是这样的:
Value:[fixed|percent]:price_modifier
例如,假设你有一个产品,如果是中号的话,价格会上涨5元,如果是大号的话,上涨10元,你就可以用下面的值作为一个自定义选项的值:
Small|Medium:fixed:5|Large:fixed:10
在第一个例子加上额外的 价格/ SKU 后变成:sku, name, description, price, Size:drop_down:1
T-Shirt1,T-Shirt, A T-Shirt, 5.00, Small:fixed:0:-SM|Medium:percent:2:-MED|Large:percent:3:-LRG
T-Shirt2,T-Shirt2,Another T-Shirt,6.00, XS:fixed:0:-XS|S:fixed:0:-S|M:fixed:1:-M|L:fixed:1:-L|XL:fixed:2:-XL自定义属性相关类型名称对照表: field: Field
area: Area
file: File
drop_down: Drop-down
radio: Radio Buttons
checkbox: Checkbox
multiple: Multiple Select
date: Date
date_time: Date & Time
time: Time-------------------------------------------解决Magento批量上传图片时,图片自动被Exclude问题:
同样是修改这个文件,找到:
$product->addImageToMediaGallery(Mage::getBaseDir('media') . DS . 'import' . $file, $fields)
添加两个值即可。
$product->addImageToMediaGallery(Mage::getBaseDir('media') . DS . 'import' . $file, $fields, false, false )附件为 Magento1.4.1.1 专用的 Product.php原文出处: http://hi.baidu.com/magentojianzha/blog/item/b82188c0e3f9ab50f31fe742.html
下面的行号是 Magento 1.4.1.1版的。 老的版本可能会有点不一样。在大约617行的时候你会看到:foreach ($importData as $field => $value) { 在这行上面加入:
$custom_options = array();
现在来到627行,你可以看下以下代码:$attribute = $this->getAttribute($field);
if (!$attribute) {
在 if (!$attribute) { 这个语句的后面,需要加入下面这些代码: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;
}
}
}
}现在移到783行的位子,你会看到 $product->save();就在这后面,加入下面的代码:foreach ($product->getOptions() as $o) {
$o->getValueInstance()->deletue($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) {}
}
}
就是这样了,现在一切就绪准备导入自定义产品选项了。要导入一个自定义选项,你需要在你的CSV导入文件中添加新的一列。新列的名字决定了该选项的名称和类型。格式应该是: Title:Input Type:Is Required:Sort Order. (名称:类型:是否必需: 属性排序)。例如,要创建一个必需的下拉式选项,名称为“Size”,而且在前台显示自定义属性排序第一,那么列标题应该为:Size:drop_down:1 :1 (红色1 表示必需,0表示可选,后面那个1表示自定义属性在前台的显示位置)这是类型的一列。他们会在Magento 管理员界面中的"cumstom options"出现。 而类型一般都有多种值(drop_down下拉式, radio 单选, checkbox 复选框, multiple 复合式),你可以用一个 | 的分隔符来指定多种值。 例如:小,中,大 你可以用 "小|中|大" 作为你csv文件里 "Size:drop_down:1" 一列的值。
这里有一个导入格式:
sku, name, description, price, Size:drop_down:1
T-Shirt1, T-Shirt, A T-Shirt, 5.00, Small|Medium|Large
T-Shirt2, T-Shirt2, Another T-Shirt, 6.00, XS|S|M|L|XL
另外你可以为每一个自定义选项值指定一个额外的 价格和 SKU 。这个的语句是这样的:
Value:[fixed|percent]:price_modifier
例如,假设你有一个产品,如果是中号的话,价格会上涨5元,如果是大号的话,上涨10元,你就可以用下面的值作为一个自定义选项的值:
Small|Medium:fixed:5|Large:fixed:10
在第一个例子加上额外的 价格/ SKU 后变成:sku, name, description, price, Size:drop_down:1
T-Shirt1,T-Shirt, A T-Shirt, 5.00, Small:fixed:0:-SM|Medium:percent:2:-MED|Large:percent:3:-LRG
T-Shirt2,T-Shirt2,Another T-Shirt,6.00, XS:fixed:0:-XS|S:fixed:0:-S|M:fixed:1:-M|L:fixed:1:-L|XL:fixed:2:-XL自定义属性相关类型名称对照表: field: Field
area: Area
file: File
drop_down: Drop-down
radio: Radio Buttons
checkbox: Checkbox
multiple: Multiple Select
date: Date
date_time: Date & Time
time: Time-------------------------------------------解决Magento批量上传图片时,图片自动被Exclude问题:
同样是修改这个文件,找到:
$product->addImageToMediaGallery(Mage::getBaseDir('media') . DS . 'import' . $file, $fields)
添加两个值即可。
$product->addImageToMediaGallery(Mage::getBaseDir('media') . DS . 'import' . $file, $fields, false, false )附件为 Magento1.4.1.1 专用的 Product.php原文出处: http://hi.baidu.com/magentojianzha/blog/item/b82188c0e3f9ab50f31fe742.html
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询