1

Magento 导入/导出设施还有很多不足之处。

我们最近尝试更新 Magento 多商店设置的批发商店的所有价格。我之前只用一种产品对此进行了测试,并且效果很好。

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

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

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

即使我完全按照 Magento 在一天开始时向我吐出所有内容的方式重新导入 CSV,它仍然不会让商店恢复到原来的样子。它内置的导入/导出功能刚刚完成了整个系统的完整哈希,这已经花了我 3 周的时间在 Excel 中使用无数公式和宏对产品数据进行排序。

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

刚刚遇到这个论坛帖子,这是对我们刚刚遇到的确切问题的另一种解释。虽然它没有答案,但认为它可能是解决同一问题的有用方法。

4

3 回答 3

2

Actually managed to fix this using a different method to @Jared Kipe's method although continued to comment on his approach as no doubt it would have been a safer and more practical solution than mine.

Within the MySQL database, I removed all records from the following tables relating to the store_id in question:-

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

When dealing with thousands of records like I was, this is far quicker executing the queries to handle this, for example:-

DELETE FROM `db_name`.`catalog_product_entity_*` WHERE `store_id` = 2;

(Where you replace db_name with the name of your database and the * with each of the appended names to the table.

This then ensures that for the store_id '2', all product configuration is reset back to 'Use Default Config'.

I'm keen to receive other answers and test out in order to ensure that the best approach to my original issue is highlighted here for future use. I actually think I encountered a bug in Magento as I can't see how the import process could have possible wiped all product data for multistores based on minimal (if at all) change in the CSV that it exported out. Lesson to be learn that writing a script as @Jared Kipe suggests will likely prove the best method, and maybe import dataflows (which I've just created a custom one to update all wholesale pricing and it has worked flawlessly by the way).

于 2013-07-02T17:15:27.647 回答
2

最简单的清理方法是使用“更新属性”批量操作。

到目录-> 管理产品。如果需要过滤。点击网格左上角的“全选”链接。下拉操作以选择“更新属性”并点击提交(网格右上角)

此时,您正在批量编辑您选择的所有产品。在左上角选择您要编辑的商店视图。

对于您要更新的每个属性,勾选“更改”,然后勾选“使用配置设置”框。

当您对编辑感到满意时,请点击右上角的“保存”按钮。

在代码中

您可以像这样使用模型“catalog/product_action”来实现相同的目标。

Mage::getSingleton('catalog/product_action')->updateAttributes($arrayIds, array('attribute_code' => 'Desired Attribute Value'), $storeId);

其中 $arrayIds 是一个产品 ID 数组。这比迭代产品集合和保存单个项目要快得多。

于 2013-07-02T16:15:17.367 回答
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

于 2015-06-04T16:22:02.367 回答