Magento进口/出口设施还有很多不足之处。
我们最近试图更新Magento多店铺设置的批发商店的所有价格。我之前只使用过一种产品进行了测试,结果非常好。
零售店的价格为X,批发商店的价格为Y.两种产品都在前端和后端正确显示。
然后,我继续对所有产品应用相同的流程,更新CSV中的所有批发价格,除了将批发应用于商店列之外,其他所有内容都保持完整。
导入后,Magento现在决定擦除每个批发商店的“使用默认配置”设置,除了价格之外,这几乎是所有产品中的所有产品。所以现在批发商店里没有产品,因为它们都没有名称,描述,税收等级,可见性,状态等等。
即使我重新导入CSV完全是因为Magento在一天开始时向我发出了一切,但它仍然不会让商店恢复原状。它内置的导入/导出功能刚刚完成了整个系统的哈希,这已经花了我3个星期的时间用Excel中的无数公式和宏来对产品数据进行排序。
我希望有一种快速简便的方法可以在某处恢复批发商店'使用默认配置'吗?非常感谢。
刚刚遇到this forum post,这是我们刚遇到的确切问题的另一种解释。它虽然没有答案,但认为这对同样的问题可能是有用的。
答案 0 :(得分:2)
清理它的最简单方法是使用“更新属性”群发操作。
转到目录 - > ManageProducts。 根据需要过滤。 点击网格左上角的“全选”链接。 下拉动作以选择“更新属性”并点击提交(网格的右上角)
此时,您正在批量编辑您选择的所有产品。 在左上角选择要编辑的商店视图。
对于您要更新的每个属性,请勾选“更改”,然后选中“使用配置设置”框。
如果对编辑感到满意,请点击右上角的“保存”按钮。
代码
你可以使用像这样的模型'catalog / product_action'来实现同样的目的。
Mage::getSingleton('catalog/product_action')->updateAttributes($arrayIds, array('attribute_code' => 'Desired Attribute Value'), $storeId);
其中$ arrayIds是产品ID的数组。这比迭代产品集合并保存单个项目要快得多。
答案 1 :(得分:2)
实际上设法使用与@Jared Kipe方法不同的方法解决了这个问题,尽管继续对他的方法发表评论,毫无疑问它会比我的方法更安全,更实用。
在MySQL数据库中,我删除了以下表格中与所讨论的store_id
相关的所有记录: -
catalog_product_entity_datetime
catalog_product_entity_decimal
catalog_product_entity_gallery
catalog_product_entity_group_price
catalog_product_entity_int
catalog_product_entity_media_gallery
catalog_product_entity_media_gallery_value
catalog_product_entity_text
catalog_product_entity_tier_price
catalog_product_entity_varchar
当处理像我这样的数千条记录时,执行查询以处理此问题要快得多,例如: -
DELETE FROM `db_name`.`catalog_product_entity_*` WHERE `store_id` = 2;
(将db_name
替换为数据库名称,将*
替换为表中的每个附加名称。
然后确保对于store_id
'2',所有产品配置都会重置为“使用默认配置”。
我热衷于接收其他答案并进行测试,以确保在此处突出显示我原始问题的最佳方法以供将来使用。我实际上认为我在Magento中遇到了一个错误,因为我无法看到导入过程如何根据导出的CSV中的最小(如果有的话)更改来删除多个存储的所有产品数据。需要了解的是,写一个脚本为@Jared Kipe建议可能会证明是最好的方法,也许可以导入数据流(我刚刚创建了一个自定义版本来更新所有批发价格,顺便说一下它完美无缺)。 / p>
答案 2 :(得分:0)
您可以使用 core_block_abstract_to_html_before adminhtml事件为管理批量更新表单中的每个属性添加所需的复选框。
然后,您需要使用 catalog_product_attribute_update_before 事件从特定商店视图的EAV表中删除值,仅适用于那些具有您之前注入的复选框的属性 core_block_abstract_to_html_before 设置为已选中。