You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Magento 2:寻求可批量关联SKU与商品图片的脚本/扩展

解决方案:Magento 2批量关联SKU目录下的多张图片

刚好帮不少朋友解决过这类Magento 2批量图片关联的问题,给你两个方向的方案,都不用折腾CSV配置,完全匹配你按SKU目录存放图片的需求:

一、现成扩展推荐(操作最简便)

如果你偏好可视化操作、不想碰代码,这两个扩展和你之前用的Magento 1 Nanowebgroup ImageImporter功能非常类似:

  • Firebear Studio Image Import Extension
    这个扩展专门针对批量图片导入场景,完美支持按SKU目录匹配图片:

    1. 安装后在后台进入扩展配置页,设置你的图片根目录(就是存放所有SKU子文件夹的路径)
    2. 选择要导入的图片格式(比如你需要的.jpg)
    3. 一键启动导入,它会自动扫描每个SKU文件夹下的所有图片,关联到对应商品,还能批量设置主图、缩略图、图库图的类型,全程不用手动编辑CSV。
  • Amasty Product Images Import
    这款扩展的界面更友好,支持预览图片和商品的匹配情况,适合新手操作:

    1. 配置时指定图片存储的目录规则(/(SKU)/*.jpg完全符合它的匹配逻辑)
    2. 可以自定义每张图片的用途(主图/缩略图等),也能一键批量设置
    3. 导入过程有进度提示,还能跳过不存在的SKU,避免报错。

二、自定义PHP脚本(免费灵活)

如果你不想安装第三方扩展,自己写个简单的PHP脚本就能搞定,逻辑很清晰,适合有基础的开发者:

把下面的脚本放在你的Magento 2根目录,修改图片根目录后直接执行即可:

<?php
use Magento\Framework\App\Bootstrap;

require __DIR__ . '/app/bootstrap.php';

$bootstrap = Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();

// 设置为后台区域,避免权限问题
$state = $objectManager->get('Magento\Framework\App\State');
$state->setAreaCode('adminhtml');

// 替换成你的图片根目录(比如你的图片存放在/var/www/html/images/下,每个SKU对应子文件夹)
$imageRootDir = '/path/to/your/images/';

// 遍历所有SKU子文件夹
$skuDirectories = glob($imageRootDir . '*', GLOB_ONLYDIR);
foreach ($skuDirectories as $skuDir) {
    $sku = basename($skuDir);
    try {
        // 通过SKU加载对应的商品
        $product = $objectManager->create('Magento\Catalog\Model\Product')->loadByAttribute('sku', $sku);
        if (!$product) {
            echo "⚠️  未找到SKU为{$sku}的商品,跳过\n";
            continue;
        }

        // 遍历当前SKU文件夹下的所有jpg图片
        $images = glob($skuDir . '/*.jpg');
        foreach ($images as $index => $imagePath) {
            $imageFileName = basename($imagePath);
            try {
                // 第一张图片设为主图、缩略图、基础图,后续图片仅加入图库
                $imageTypes = $index === 0 ? ['image', 'small_image', 'thumbnail'] : ['gallery'];
                $product->addImageToMediaGallery($imagePath, $imageTypes, false, false);
                echo "✅  已将图片{$imageFileName}关联到SKU: {$sku}\n";
            } catch (\Exception $e) {
                echo "❌  关联图片{$imageFileName}到{$sku}失败:{$e->getMessage()}\n";
            }
        }

        // 保存商品
        $product->save();
    } catch (\Exception $e) {
        echo "❌  处理SKU {$sku}时出错:{$e->getMessage()}\n";
    }
}
echo "\n🎉  图片批量关联操作完成!\n";
?>

脚本注意事项:

  • 务必先在测试环境运行,确认没问题再放到生产环境
  • 替换/path/to/your/images/为你实际的图片根目录
  • 脚本执行需要足够的文件权限,建议用Magento的运行用户执行(比如www-data)
  • 可以根据需求调整$imageTypes的设置,比如所有图片都只加入图库,或者自定义哪些是主图

内容的提问来源于stack exchange,提问作者Sergio Pera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:23:57