我有一个导入脚本,可以导入超过 2000 多种产品,包括它们的图像。我通过 CLI 运行此脚本,因为我觉得这是提高速度的最佳方式,即使我在 magento 管理员中拥有相同的导入脚本可用和可执行作为扩展。脚本运行得很好。几乎完美!但是,有时会出现addToImageGallery
某种故障并导致某些图像具有No Image
默认产品图像,而唯一的其他图像根本没有被选为默认值。如何批量更新所有产品以将产品媒体库中的第一张图片设置为默认的“基本”、“图片”和“缩略图”图片?
3 回答
我在这个链接上发现了一些关于这样做(以及更多)的技巧:
http://www.magentocommerce.com/boards/viewthread/59440/(感谢transio!)
虽然,对于 Magento 1.6.2.0(我使用),那里的第一个 SQL 技巧(技巧 1 - 自动设置默认基础、拇指、小图像到第一个图像。)需要一些修改。
在倒数第二行有一个AND ev.attribute_id IN (70, 71, 72)
部分。这应该指向在 Magento 1.6.2.0 中可能不再相关的属性 ID。为了解决这个问题,我使用任何 MySQL 查询工具(PHPMyAdmin 或 MySQL 查询浏览器)查看了该catalog_product_entity_varchar
表。应该有类似的条目:
value_id, entity_type_id, attribute_id, store_id, entity_id, value
..
146649, 4, 116, 0, 1, '2'
146650, 4, 76, 0, 1, ''
146651, 4, 78, 0, 1, ''
146652, 4, 79, 0, 1, '/B/0/B05-01.jpg'
146653, 4, 80, 0, 1, '/B/0/B05-01.jpg'
146654, 4, 81, 0, 1, '/B/0/B05-01.jpg'
146655, 4, 96, 0, 1, ''
146656, 4, 100, 0, 1, ''
146657, 4, 102, 0, 1, 'container2'
..
我的钱花在了三个图像路径的组上,作为可能的替代品。所以现在生成的 SQL 应该是:
UPDATE catalog_product_entity_media_gallery AS mg,
catalog_product_entity_media_gallery_value AS mgv,
catalog_product_entity_varchar AS ev
SET ev.value = mg.value
WHERE mg.value_id = mgv.value_id
AND mg.entity_id = ev.entity_id
AND ev.attribute_id IN (79, 80, 81) # <-- attribute IDs updated here
AND mgv.position = 1;
所以我致力于它,运行它,然后.. presto!都修好了!如果需要,您可能还希望将其封装在事务中。但这超出了这个问题的范围。
好吧,这是迄今为止对我有用的修复程序!如果还有更多的,请分享!
有:
146652, 4, 79, 0, 1, '/B/0/B05-01.jpg'
146653, 4, 80, 0, 1, '/B/0/B05-01.jpg'
146654, 4, 81, 0, 1, '/B/0/B05-01.jpg'
所以应该是:
AND ev.attribute_id IN (79, 80, 81) # <-- 此处更新的属性 ID
代替:
AND ev.attribute_id IN (78, 80, 81) # <-- 此处更新的属性 ID
正在寻找类似的东西。
UPDATE catalog_product_entity_media_gallery AS mg,
catalog_product_entity_media_gallery_value AS mgv,
catalog_product_entity_varchar AS ev
SET ev.value = mg.value
WHERE mg.value_id = mgv.value_id
AND mg.entity_id = ev.entity_id
AND ev.attribute_id IN (79, 80, 81) # <-- attribute IDs updated here
AND mgv.position = 1;