Magento导入重置多个存储的每个'使用默认配置'

时间:2013-07-02 15:31:51

标签: magento magento-1.7

Magento进口/出口设施还有很多不足之处。

我们最近试图更新Magento多店铺设置的批发商店的所有价格。我之前只使用过一种产品进行了测试,结果非常好。

零售店的价格为X,批发商店的价格为Y.两种产品都在前端和后端正确显示。

然后,我继续对所有产品应用相同的流程,更新CSV中的所有批发价格,除了将批发应用于商店列之外,其他所有内容都保持完整。

导入后,Magento现在决定擦除每个批发商店的“使用默认配置”设置,除了价格之外,这几乎是所有产品中的所有产品。所以现在批发商店里没有产品,因为它们都没有名称,描述,税收等级,可见性,状态等等。

即使我重新导入CSV完全是因为Magento在一天开始时向我发出了一切,但它仍然不会让商店恢复原状。它内置的导入/导出功能刚刚完成了整个系统的哈希,这已经花了我3个星期的时间用Excel中的无数公式和宏来对产品数据进行排序。

我希望有一种快速简便的方法可以在某处恢复批发商店'使用默认配置'吗?非常感谢。

刚刚遇到this forum post,这是我们刚遇到的确切问题的另一种解释。它虽然没有答案,但认为这对同样的问题可能是有用的。

3 个答案:

答案 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 设置为已选中。

原始答案:https://magento.stackexchange.com/a/45229/16724