我有一个导入脚本,可以导入超过2000多种产品,包括他们的图像.我通过CLI运行这个脚本,因为我觉得这是速度快的最好的方法,即使我有相同的导入脚本可用并在magento admin作为扩展可执行.脚本运行得很好.几乎完美!然而,有时会以addToImageGallery某种方式发生故障并导致某些图像具有No Image默认产品图像和唯一未被选择为默认图像的其他图像.如何批量更新所有产品,以将产品的媒体库中的第一个图像设置为默认的"基本","图像"和"缩略图"图像?
我在这个链接上发现了这个(以及更多)的一些技巧:
http://www.magentocommerce.com/boards/viewthread/59440/(谢谢transio!)
虽然,对于Magento 1.6.2.0(我使用的),那里的第一个SQL技巧(特技1 - 自动设置默认基础,拇指,小图像到第一个图像.)需要一些修改.
在第二到最后一行有AND ev.attribute_id IN (70, 71, 72)一部分.这应该指向属性ID,它可能在Magento 1.6.2.0中不再相关.为了解决这个问题,我使用任何MySQL查询工具(PHPMyAdmin或MySQL Query Browser)来查看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'
..
Run Code Online (Sandbox Code Playgroud)
我的钱是三组图像路径的组合作为可能的替代品.所以生成的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;
Run Code Online (Sandbox Code Playgroud)
所以我致力于它,运行它... .. presto!全部固定!如果需要,您可能还希望将其封装在事务中.但这不是这个问题的范围.
嗯,这是迄今为止对我有用的修复方法!如果还有更多,请分享!