magento-将产品默认图像更新为图像库中的第一个图像

magento-将产品默认图像更新为图像库中的第一个图像,magento,php,mage,Magento,Php,Mage,我有一个导入脚本,可以导入2000多个产品,包括它们的图像。我通过CLI运行此脚本,因为我觉得这是速度方面的最佳方式,即使我在magento admin上有相同的导入脚本可用且可执行,作为扩展。脚本运行得很好。几乎完美!但是,有时,addToImageGallery会以某种方式出现故障,导致一些图像将无图像作为默认产品图像,而另一个图像则根本没有选择作为默认图像。如何批量更新所有产品,将产品媒体库中的第一个图像设置为默认的“基本”、“图像”和“缩略图”图像?我在这个链接上找到了一些技巧: (谢谢

我有一个导入脚本,可以导入2000多个产品,包括它们的图像。我通过CLI运行此脚本,因为我觉得这是速度方面的最佳方式,即使我在magento admin上有相同的导入脚本可用且可执行,作为扩展。脚本运行得很好。几乎完美!但是,有时,
addToImageGallery
会以某种方式出现故障,导致一些图像将
无图像
作为默认产品图像,而另一个图像则根本没有选择作为默认图像。如何批量更新所有产品,将产品媒体库中的第一个图像设置为默认的“基本”、“图像”和“缩略图”图像?

我在这个链接上找到了一些技巧:

(谢谢transio!)

虽然,对于Magento 1.6.2.0(我使用的),第一个SQL技巧(技巧1-自动将默认基、拇指、小图像设置为第一个图像)需要一些修改

在倒数第二行的(70,71,72)部分中有一个
和ev.attribute_id。这应该指向属性ID,这在Magento 1.6.2.0中可能不再相关。为了解决这个问题,我使用任何MySQL查询工具(PHPMyAdmin或MySQL查询浏览器),查看了
catalog\u product\u entity\u 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;
将目录、产品、实体、媒体库更新为mg,
目录\产品\实体\媒体\画廊\价值为mgv,
目录\u产品\u实体\u varchar作为ev
设置ev.value=mg.value
其中mg.value\u id=mgv.value\u id
mg.entity_id=ev.entity_id
和ev.attribute_id在(79,80,81)#中有:

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'

因此,它应该是:

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;
(79,80,81)中的ev.attribute_id#
将目录、产品、实体、媒体库更新为mg,
目录\产品\实体\媒体\画廊\价值为mgv,
目录\u产品\u实体\u varchar作为ev
设置ev.value=mg.value
其中mg.value\u id=mgv.value\u id
mg.entity_id=ev.entity_id

和ev.attribute_id IN(79,80,81)#出于某种原因,这只设置了小图像和缩略图。由于某些原因,未设置基础映像。我确认catalog_product_entity_varchar中的属性id分别为78、80和81。你知道为什么会出现这种情况吗?这很奇怪,我已经用过几十次这种技术了,但还没有一次失败。。你使用的是什么版本?嗨,赛斯,你能分享一下你的产品上传脚本吗。因为我是新手,理解起来很混乱。