我不确定发生了什么,但使用此模板(queldorei.com)我无法使用CSV导入更新数量。
以下是我的CSV文件的内容:
sku,qty
sku_red,444
sku_green,222
sku_blue,333
但是,每次我使用系统>上传它导入/导出>导入>产品:替换现有的,然后它将替换我的所有产品数量:“444”(第一记录)。它只占用CSV的第一行并适用于我的所有产品。
我的产品设置如下:
我试图向基础magento网站(非模板)模仿同样的东西,它运作得很好。
你能告诉我如何解决这个问题吗?
或者可能如果你能找到我可以找到的与magento产品导入流程相关的文件(php)?
谢谢
答案 0 :(得分:1)
我刚刚经历了同样的问题。我不知道有多少版本的magento存在同样的问题,但是您可以将其修复到文件app/code/core/Mage/ImportExport/Model/Import/Entity/Product.php
并在1608附近的某处进行修改。
要在不使用行号的情况下找到该位置,只需转到方法'_saveStockItem'。你会看到magento如何为每一行创建数据。主要问题从这里开始:
$row['product_id'] = $this->_newSku[$rowData[self::COL_SKU]]['entity_id'];
产品数据正在该地方启动,但开发人员忘记使用$row = array()
重置$ row变量。所以改为启动了这样的数组:
$row = array(
'product_id' => $this->_newSku[$rowData[self::COL_SKU]],
'stock_id' => 1
);
我们有:
$row = array(
// last $row data ( for instance qty )
// plus two lines below which don't reset array...
'product_id' => $this->_newSku[$rowData[self::COL_SKU]],
'stock_id' => 1
);
在下一行中,magento按顺序合并数组:
所以我们可以假设(没有验证它),如果没有使用$ row = array()重置$ row,那么第一个$行的数据将被用作所有其他行的数据。