我使用 System - Import/Export - Import 选项导入了产品。
我可以在管理面板中看到我的产品,但在前端看不到。
我尝试了重新索引、缓存清除、缓存刷新、物理缓存删除。
还检查了产品库存状态、可用性等。一切正常。
但它们没有显示在前端。我标记了一个东西,如果我打开我使用 csv 导入的产品,只是保存而没有任何更改,它就会开始显示。但我有100多种产品。所以我不能使用这个解决方案。
所以请帮助我在csv中哪里出错了。下面是我的 csv 截图。
您需要确保将产品附加到网站。
这可以通过批量更新来完成:
也可以在 csv 中通过使用“_product_websites”字段并将其设置为网站名称或“base”来完成。
我遇到了同样的问题,然后我访问了我的 var/export/export_all_products 文件,再次下载并通过导入将其上传回来,注销我的帐户并重新登录,所有产品都回来了。这对我来说是一种备份,我可以在后端看到所有产品。
我忘记了哪些 CSV 列是强制性的,但我记得如果缺少某些列,导入器不会告诉您,而是您会得到您所描述的行为。
找出什么是强制性的最简单的方法是:
这需要分配试错...
在我的情况下,丢失的列始终具有相同的值,因此如果您的问题也是这种情况,您可以简单地扩展 CSV 导入器并在其中硬编码这些值,而不是手动修复 CSV。
如果您在管理员中打开并保存您的产品,您的产品会正确保存,您还可以:
修复 Magento ImportExport 错误:
第一个错误是,如果您导入多个产品,则第一个产品的数量信息将用于所有产品。要解决此问题,您必须在函数$row = array();
之前添加。$row['product_id'] = $this->_newSku[$rowData[self::COL_SKU]]['entity_id'];
Mage_ImportExport_Model_Import_Entity_Product::_saveStockItem()
第二个错误导致 Magento ImportExport 模块在导入多个产品时返回外键约束错误。发生错误是因为 magento 将产品数据拆分为多个段,如果一个产品位于两个段中,导入器将在导入第二段之前删除为第一个段中的产品导入的数据,从而导致数据库损坏(有关详细说明,请参阅此链接- 此是我得到以下解决方案的地方)。
请注意,删除外键约束不会解决问题,反而会使问题变得更糟,因为数据库将包含损坏的数据。
要修复它,您必须更改Mage_ImportExport_Model_Import_Entity_Abstract::_saveValidatedBunches()
函数中的代码:
if ($startNewBunch || !$source->valid()) {
添加后
if ($startNewBunch && count($bunchRows) > 1) {
$arrKeys = array_keys($bunchRows);
$arrNew = array();
while(($tRow = array_pop($bunchRows))) {
$tKey = array_pop($arrKeys);
$arrNew[$tKey] = $tRow;
if ($tRow['sku']) {
break;
}
}
$nextRowBackup = array_reverse($arrNew, TRUE) + $nextRowBackup;
}
希望这可以帮助。
我最近遇到了同样的问题,我花了一些时间来解决这个问题......
看起来 magento 需要每个产品的状态标志,否则 magento 不会在仪表板中显示它。
解决方案:在您的 CSV 文件中添加一个“状态”列并将所有状态设置为“启用”(是的,它不是布尔值。只需使用引号内的字符串即可:)
按您的方式导入。如果它们已启用,但未显示...
然后您可以通过单击“管理产品”表中的“全选”产品,然后单击“更改状态”,然后选择“启用”来解决此问题。此过程可能需要一分钟。
访问您的商店,您应该会看到带有产品的前端。
状态/启用设置的某种错误。
在 magento 2 中,我们需要在索引管理中重新索引以在前端显示产品。
我们可以通过 cmd 重新索引。就像给定的示例一样,我们需要在 cmd 之后进入 magento 文件目录php -f bin/magento indexer:reindex
来重新索引。
您必须在 CSV 中有下一个字段
sku
_attribute_set
_type
_category
description
image
name
price
short_description
status
tax_class_id
thumbnail
visibility
weight
qty
_product_websites
is_in_stock
请注意,该字段is_in_stock
是必填项,即使qty
超过 1
当我第一次开始通过 csv 导入产品时,虽然我将产品设置为启用,但我发现即使它在 magento 后端显示为启用,它实际上并不是 - 认为它与将字段内容设置为“1”或“0”而不是“启用”或“禁用/空”。
为了解决这个问题,在导入后,我只需选择后端中的所有产品并将状态更改为启用 - 它解决了问题。
但是,我确实认为,如果我只是更改了 csv 导入中的数据,它会为我省去这个小小的不便。