【问题标题】:magento - Update product default image to first image in image gallerymagento - 将产品默认图片更新为图片库中的第一张图片
【发布时间】:2016-09-03 20:00:12
【问题描述】:

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

【问题讨论】:

    标签: magento php mage


    【解决方案1】:

    我在此链接上发现了一些这样做(以及更多)的技巧:

    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;
    

    所以我致力于它,运行它,然后......转眼间!都修好了!如果需要,您可能还希望将其封装在事务中。但这超出了这个问题的范围。

    嗯,这是迄今为止对我有用的修复程序!如果还有更多,请分享!

    【讨论】:

    • 由于某种原因,这只设置了小图像和缩略图。出于某种原因,基本图像未设置。我确认 catalog_product_entity_varchar 中的属性 ID 是 78、80 和 81。任何想法为什么会这样?
    • 这很奇怪,我已经用过这种技术几十次了,还没有一次失败过。也许你用的是什么版本?
    • 嗨,Seth,您能分享您的产品上传脚本吗?因为我是新手,理解起来很混乱。
    【解决方案2】:

    有:

    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) #

    代替:

    AND ev.attribute_id IN (78, 80, 81) #

    正在寻找类似的东西。

    【讨论】:

      【解决方案3】:
      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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-04
        相关资源
        最近更新 更多